motor-shield-pwm.py
# Dieses Werk ist unter der MIT-Lizenz lizenziert.
# Copyright (c) 2013-2023 OpenMV LLC. Alle Rechte vorbehalten.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# Beispiel für Motor-Shield-PWM
#
# Dieses Beispiel demonstriert die Steuerung des Motor-Shields Ihrer
# OpenMV Cam. Das Motor-Shield wird über das PYB-Modul gesteuert,
# mit dem Sie PWM zur Geschwindigkeitssteuerung und zum Setzen digitaler E/A-Pin-
# Zustände nutzen können. Das Motor-Shield benötigt 6 E/A-Pins für beide Motoren.
import pyb
# Diese Pins steuern die Drehrichtung, während die anderen PWM-Pins
# unten die Geschwindigkeit steuern. Die Richtung jedes Motors
# wird über eine H-Brücke festgelegt, wobei A0/1 die beiden Seiten
# eines H-Brücken-Treibers sind. B0/1 ist eine weitere H-Brücke.
pinADir0 = pyb.Pin("P3", pyb.Pin.OUT_PP, pyb.Pin.PULL_NONE)
pinADir1 = pyb.Pin("P2", pyb.Pin.OUT_PP, pyb.Pin.PULL_NONE)
pinBDir0 = pyb.Pin("P1", pyb.Pin.OUT_PP, pyb.Pin.PULL_NONE)
pinBDir1 = pyb.Pin("P0", pyb.Pin.OUT_PP, pyb.Pin.PULL_NONE)
# Dir0/1 müssen für Vorwärts- oder Rückwärtsbetrieb ungleich
# sein. Sind sie gleich, handelt es sich um einen Bremsvorgang.
# Sind sie ungleich, dreht sich der Motor je nach Verkabelung und dem Wert von dir 0
# in die eine oder andere Richtung.
pinADir0.value(0)
pinADir1.value(1)
# Dir0/1 müssen für Vorwärts- oder Rückwärtsbetrieb ungleich
# sein. Sind sie gleich, handelt es sich um einen Bremsvorgang.
# Sind sie ungleich, dreht sich der Motor je nach Verkabelung und dem Wert von dir 0
# in die eine oder andere Richtung.
pinBDir0.value(0)
pinBDir1.value(1)
# Ein Timer-Objekt erstellen, das mit 1 kHz läuft und den
# PWM-Ausgang auf Ihrer OpenMV Cam versorgt. Muss nur einmal erstellt werden.
tim = pyb.Timer(4, freq=1000)
# Das Timer-Objekt verwenden, um zwei PWM-Ausgänge auf der OpenMV Cam zu erzeugen.
# Diese Timer steuern die Geschwindigkeit der Motoren. Sie werden
# den PWM-Prozentsatz dieser Timer wiederholt in Ihrer Schleife setzen.
chA = tim.channel(1, pyb.Timer.PWM, pin=pyb.Pin("P7"))
chB = tim.channel(2, pyb.Timer.PWM, pin=pyb.Pin("P8"))
while True:
for i in range(100):
pyb.delay(100)
chA.pulse_width_percent(i)
chB.pulse_width_percent(99 - i)
for i in range(100):
pyb.delay(100)
chA.pulse_width_percent(99 - i)
chB.pulse_width_percent(i)