motor-shield-pwm.py
# Ce travail est publié sous licence MIT.
# Copyright (c) 2013-2023 OpenMV LLC. Tous droits réservés.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# Exemple PWM avec le shield moteur
#
# Cet exemple montre comment contrôler le shield moteur sur votre
# OpenMV Cam. Le shield moteur est contrôlé via le module PYB
# qui permet de faire du PWM pour contrôler la vitesse et définir les états
# des broches d'E/S numériques. Le shield moteur nécessite 6 broches d'E/S pour les deux moteurs.
import pyb
# Ces broches contrôlent notre direction tandis que les autres broches PWM
# ci-dessous contrôlent la vitesse. La direction de chaque moteur
# est définie par un pont en H où A0/1 sont les deux côtés d'
# un driver de pont en H. B0/1 forment un autre pont en 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 doivent être différents l'un de l'autre pour un fonctionnement
# en avant ou en arrière. S'ils sont identiques, il s'agit alors d'un freinage.
# S'ils sont différents, le moteur tournera dans un sens ou dans l'
# autre selon son câblage et la valeur de dir 0.
pinADir0.value(0)
pinADir1.value(1)
# Dir0/1 doivent être différents l'un de l'autre pour un fonctionnement
# en avant ou en arrière. S'ils sont identiques, il s'agit alors d'un freinage.
# S'ils sont différents, le moteur tournera dans un sens ou dans l'
# autre selon son câblage et la valeur de dir 0.
pinBDir0.value(0)
pinBDir1.value(1)
# Créer un objet timer fonctionnant à 1 KHz qui alimentera
# la sortie PWM de votre OpenMV Cam. Il ne doit être créé qu'une seule fois.
tim = pyb.Timer(4, freq=1000)
# Utiliser l'objet timer pour créer deux sorties PWM sur l'OpenMV Cam.
# Ces timers contrôlent la vitesse des moteurs. Vous allez définir
# le pourcentage PWM de ces timers de manière répétée dans votre boucle.
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)