motor-shield-pwm.py
# Questo lavoro è concesso in licenza MIT.
# Copyright (c) 2013-2023 OpenMV LLC. Tutti i diritti riservati.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# Esempio PWM dello shield motore
#
# Questo esempio mostra come controllare lo shield motore sulla
# OpenMV Cam. Lo shield motore viene controllato usando il modulo PYB,
# che consente di usare il PWM per controllare la velocità e impostare gli stati
# dei pin I/O digitali. Lo shield motore richiede 6 pin I/O per entrambi i motori.
import pyb
# Questi pin controllano la direzione, mentre gli altri pin PWM
# sottostanti controllano la velocità. La direzione di ciascun motore
# viene impostata da un ponte H, dove A0/1 sono i due lati di
# un driver a ponte H. B0/1 sono un altro ponte H.
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 devono essere diversi tra loro per il funzionamento in avanti
# o indietro. Se sono uguali, si tratta di un'operazione di frenata.
# Se non sono uguali, il motore ruoterà in un senso o nell'altro,
# a seconda del collegamento e del valore di dir 0.
pinADir0.value(0)
pinADir1.value(1)
# Dir0/1 devono essere diversi tra loro per il funzionamento in avanti
# o indietro. Se sono uguali, si tratta di un'operazione di frenata.
# Se non sono uguali, il motore ruoterà in un senso o nell'altro,
# a seconda del collegamento e del valore di dir 0.
pinBDir0.value(0)
pinBDir1.value(1)
# Creare un oggetto timer che funzioni a 1KHz e che alimenterà
# l'uscita PWM sulla nostra OpenMV Cam. Deve essere creato una sola volta.
tim = pyb.Timer(4, freq=1000)
# Usare l'oggetto timer per creare due uscite PWM sulla OpenMV Cam.
# Questi timer controllano la velocità dei motori. Si imposterà
# ripetutamente la percentuale PWM di questi timer nel proprio ciclo.
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)