Modifications

Sauter à la navigation Sauter à la recherche
2 660 octets ajoutés ,  9 juin 2014 à 11:05
Ligne 212 : Ligne 212 :  
* Permet de tourner sur place (ex: moteur droit en marche avant + moteur gauche en marche arrière puis activer les pont-H).<br />Pratique pour un système à chenille ;-) mais aussi fonctionnel avec un robot sur roue.
 
* Permet de tourner sur place (ex: moteur droit en marche avant + moteur gauche en marche arrière puis activer les pont-H).<br />Pratique pour un système à chenille ;-) mais aussi fonctionnel avec un robot sur roue.
 
* Permet de moduler la vitesses des deux moteurs en appliquant un signal PWM sur la broche GPIO 4.<br />Nécessite une modification de notre code d'exemple.
 
* Permet de moduler la vitesses des deux moteurs en appliquant un signal PWM sur la broche GPIO 4.<br />Nécessite une modification de notre code d'exemple.
 
+
 
 +
=== Fonction Avant() ===
 +
<nowiki>def Avant():
 +
""" Marche avant toute """
 +
print( "Marche Avant" )
 +
Desactiver()
 +
MarcheMotorA( SENS_AVANT )
 +
MarcheMotorB( SENS_AVANT )
 +
Activer()</nowiki>
 +
 
 +
La fonction Avant() effectue les tâches...
 +
# '''Desactiver()''' - Désactive le Pont-H (ENA=ENB=LOW), ce qui permet de modifier les signaux de commande IN1, IN2, IN3, IN4 en toute sérénité
 +
# '''MarcheMotorA( SENS_AVANT )''' - Active le sens de marche '''avant''' sur le premier moteur.
 +
# '''MarcheMotorB( SENS_AVANT )''' - Active le sens de marche '''avant''' sur le deuxième moteur.
 +
# '''Activer()''' - Réactive les pont-H (ENA=ENB=HIGH)... ce qui active la marche avant
 +
 
 +
=== Fonction MarcheMotorA( sens ) ===
 +
Le seul but de cette fonction est de configurer l'état des broches IN1 et IN2 pour contrôler le sens de rotation du premier moteur (MotorA).
 +
 
 +
Elle accepte 3 sens de rotation:
 +
* SENS_AVANT - pour la marche avant
 +
* SENS_ARRIERE - pour la marche arrière
 +
* SENS_ARRET - pour que le moteur ne bouge plus (même si le pont H est réactivé)
 +
 
 +
{{ambox|text=Voyez la section "[[Rasp-Hack-L298-FAQ|foire aux questions]]" si vous avez un moteur qui ne tourne pas dans le sens attendu ;-) }}
 +
 
 +
<nowiki>def MarcheMotorA( sens ):
 +
""" Controle le sens de Marche pour Moteur A """
 +
if( sens == SENS_AVANT ):
 +
GPIO.output( MOTORA_IN1, GPIO.HIGH )
 +
GPIO.output( MOTORA_IN2, GPIO.LOW )
 +
elif( sens == SENS_ARRIERE ):
 +
GPIO.output( MOTORA_IN1, GPIO.LOW )
 +
GPIO.output( MOTORA_IN2, GPIO.HIGH )
 +
elif( sens == SENS_ARRET ):
 +
GPIO.output( MOTORA_IN1, GPIO.LOW )
 +
GPIO.output( MOTORA_IN2, GPIO.LOW )</nowiki>
 +
 
 +
Pas bien compliqué en fin de compte.
 +
 
 +
=== Fonction Activer(), Desactiver ===
 +
Déjà mentionné plus haut, ces fonctions active et désactive les pont-H en manipulant le GPIO 4.
 +
 
 +
Le programme défini les constantes:
 +
<nowiki>MOTORA_ENABLE = 4 # GPIO 4 - Activation moteur A
 +
MOTORB_ENABLE = MOTORA_ENABLE # aussi utiliser GPIO 4 pour commander moteur B</nowiki>
 +
 
 +
A noter que les fonctions sont déjà prévue pour utiliser deux GPIO différents pour les signaux ENA et ENB du pont H, vous pourriez alors utiliser la définition suivante si vous en aviez besoin:
 +
<nowiki>MOTORA_ENABLE = 4 # GPIO 4 - Activation moteur A
 +
MOTORB_ENABLE = 22 # utiliser GPIO 22 pour commander le moteur B</nowiki>
 +
 
 +
<nowiki>def Desactiver():
 +
""" Désactivation des pont-H """
 +
GPIO.output( MOTORA_ENABLE, GPIO.LOW )
 +
if( MOTORB_ENABLE != MOTORA_ENABLE ):
 +
GPIO.output( MOTORB_ENABLE, GPIO.LOW )
 +
 
 +
def Activer():
 +
""" Activation des pont-H """
 +
GPIO.output( MOTORA_ENABLE, GPIO.HIGH )
 +
if( MOTORB_ENABLE != MOTORA_ENABLE ):
 +
GPIO.output( MOTORB_ENABLE, GPIO.HIGH )</nowiki>
 
{{Rasp-Hack-L298-TRAILER}}
 
{{Rasp-Hack-L298-TRAILER}}
29 917

modifications

Menu de navigation