Ligne 31 : |
Ligne 31 : |
| Petit rappel avec [[MicroPython.brochage.pyboard#Le_brochage|le schéma des broches]], si nous utilisons la sortie X3, nous devons choisir le Timer et Channel approprié pour pouvoir créer un signal PWM. | | Petit rappel avec [[MicroPython.brochage.pyboard#Le_brochage|le schéma des broches]], si nous utilisons la sortie X3, nous devons choisir le Timer et Channel approprié pour pouvoir créer un signal PWM. |
| | | |
− | <nowiki>>>> from hbridge import HBridge
| + | <syntaxhighlight lang="python"> |
− | >>> MOT1_PINS = ( pyb.Pin.board.X6, pyb.Pin.board.X5 )
| + | from hbridge import HBridge |
− | >>> MOT1_PWM = {'pin' : pyb.Pin.board.X3, 'timer' : 2, 'channel' : 3 } </nowiki>
| + | MOT1_PINS = ( pyb.Pin.board.X6, pyb.Pin.board.X5 ) |
| + | MOT1_PWM = {'pin' : pyb.Pin.board.X3, 'timer' : 2, 'channel' : 3 } |
| + | </syntaxhighlight> |
| | | |
| Voila, nous avons défini nos broches de commandes dans le tuple {{fname|MOT1_PINS}} et les informations de la broche PWM dans {{fname|MOT1_PWM}} pour le contrôle de la vitesse. | | Voila, nous avons défini nos broches de commandes dans le tuple {{fname|MOT1_PINS}} et les informations de la broche PWM dans {{fname|MOT1_PWM}} pour le contrôle de la vitesse. |
Ligne 39 : |
Ligne 41 : |
| Nous allons pouvoir créer l'objet Pont-H pour le commander. | | Nous allons pouvoir créer l'objet Pont-H pour le commander. |
| | | |
− | <nowiki>>>> h = HBridge( MOT1_PINS, MOT1_PWM )</nowiki>
| + | <syntaxhighlight lang="python"> |
| + | h = HBridge( MOT1_PINS, MOT1_PWM ) |
| + | </syntaxhighlight> |
| | | |
| Nous allons pouvoir tester les méthodes de base: | | Nous allons pouvoir tester les méthodes de base: |
Ligne 48 : |
Ligne 52 : |
| Laissez un peu de temps entre chacune des commandes pour pouvoir constater les effets sur votre mobile. | | Laissez un peu de temps entre chacune des commandes pour pouvoir constater les effets sur votre mobile. |
| | | |
− | <nowiki>>>> h.forward()
| + | <syntaxhighlight lang="python"> |
− | >>> h.backward()
| + | h.forward() |
− | >>> h.halt()</nowiki>
| + | h.backward() |
| + | h.halt() |
| + | </syntaxhighlight> |
| | | |
| Vous pouvez maintenant tester votre deuxieme pont-H avec les commandes suivantes: | | Vous pouvez maintenant tester votre deuxieme pont-H avec les commandes suivantes: |
− | <nowiki>>>> MOT2_PINS = ( pyb.Pin.board.X7, pyb.Pin.board.X8 )
| + | <syntaxhighlight lang="python"> |
− | >>> MOT2_PWM = {'pin' : pyb.Pin.board.X4, 'timer' : 5, 'channel' : 4 }
| + | MOT2_PINS = ( pyb.Pin.board.X7, pyb.Pin.board.X8 ) |
− | >>> h2 = HBridge( MOT2_PINS, MOT2_PWM )
| + | MOT2_PWM = {'pin' : pyb.Pin.board.X4, 'timer' : 5, 'channel' : 4 } |
− | >>> h2.forward()
| + | h2 = HBridge( MOT2_PINS, MOT2_PWM ) |
− | >>> h2.backward()
| + | h2.forward() |
− | >>> h2.halt()</nowiki>
| + | h2.backward() |
| + | h2.halt() |
| + | </syntaxhighlight> |
| | | |
| === Contrôle de vitesse === | | === Contrôle de vitesse === |
Ligne 71 : |
Ligne 79 : |
| Nous allons donc revoir notre programme de commande du deuxième pont-h pour contrôler la vitesse moteur. | | Nous allons donc revoir notre programme de commande du deuxième pont-h pour contrôler la vitesse moteur. |
| | | |
− | <nowiki>>>> from hbridge import HBridge
| + | <syntaxhighlight lang="python"> |
− | >>> from pyb import delay
| + | from hbridge import HBridge |
− | >>> MOT2_PINS = ( pyb.Pin.board.X7, pyb.Pin.board.X8 )
| + | from pyb import delay |
− | >>> MOT2_PWM = {'pin' : pyb.Pin.board.X4, 'timer' : 5, 'channel' : 4 }
| + | MOT2_PINS = ( pyb.Pin.board.X7, pyb.Pin.board.X8 ) |
− | >>> h2 = HBridge( MOT2_PINS, MOT2_PWM )
| + | MOT2_PWM = {'pin' : pyb.Pin.board.X4, 'timer' : 5, 'channel' : 4 } |
− | >>> for speed in range( 0, 100, 10 ):
| + | h2 = HBridge( MOT2_PINS, MOT2_PWM ) |
− | >>> h2.backward( 100-speed )
| + | for speed in range( 0, 100, 10 ): |
− | >>> delay( 1000 )
| + | h2.backward( 100-speed ) |
− | >>> h2.halt()</nowiki>
| + | delay( 1000 ) |
| + | h2.halt() |
| + | </syntaxhighlight> |
| | | |
| L'instruction {{fname|for speed in range( 0, 100, 10 )}} permet de faire varier la vitesse entre 0 et 100 par pas de 10. | | L'instruction {{fname|for speed in range( 0, 100, 10 )}} permet de faire varier la vitesse entre 0 et 100 par pas de 10. |
Ligne 108 : |
Ligne 118 : |
| Vous l'aurez compris, pour passer la marche arrière, il suffit de... | | Vous l'aurez compris, pour passer la marche arrière, il suffit de... |
| | | |
− | <nowiki>>>> r2.backward()</nowiki>
| + | <syntaxhighlight lang="python"> |
| + | r2.backward() |
| + | </syntaxhighlight> |
| | | |
| === Un moteur tourne dans le mauvais sens! === | | === Un moteur tourne dans le mauvais sens! === |
Ligne 119 : |
Ligne 131 : |
| Vous pouvez inverser la commande de l'un OU l'autre OU des deux pont-H durant la création de l'objet Robot2Wheel... voici les différentes syntaxes à votre disposition. | | Vous pouvez inverser la commande de l'un OU l'autre OU des deux pont-H durant la création de l'objet Robot2Wheel... voici les différentes syntaxes à votre disposition. |
| | | |
− | <nowiki>r2 = Robot2Wheel( reverse_mot2 = True )
| + | <syntaxhighlight lang="python"> |
| + | r2 = Robot2Wheel( reverse_mot2 = True ) |
| r2 = Robot2Wheel( reverse_mot1 = True ) | | r2 = Robot2Wheel( reverse_mot1 = True ) |
− | r2 = Robot2Wheel( reverse_mot1 = True, reverse_mot2 = True )</nowiki> | + | r2 = Robot2Wheel( reverse_mot1 = True, reverse_mot2 = True ) |
| + | </syntaxhighlight> |
| | | |
| Dans le cadre de mes tests, j'ai utilisé {{fname|1=r2 = Robot2Wheel( reverse_mot2 = True )}} pour corriger la rotation de l'un de mes moteurs. | | Dans le cadre de mes tests, j'ai utilisé {{fname|1=r2 = Robot2Wheel( reverse_mot2 = True )}} pour corriger la rotation de l'un de mes moteurs. |
Ligne 130 : |
Ligne 144 : |
| Nous allons commencer simplement, nous allons faire tourner la plateforme 2 roues sur place... en faisant tourner un moteur dans un sens et l'autre dans l'autre sens. | | Nous allons commencer simplement, nous allons faire tourner la plateforme 2 roues sur place... en faisant tourner un moteur dans un sens et l'autre dans l'autre sens. |
| | | |
− | <nowiki>>>> r2 = Robot2Wheel( reverse_mot2 = True ) # inverser la commande du moteur moteur
| + | <syntaxhighlight lang="python"> |
− | >>> r2.turn( Robot2Wheel.RIGHT_ROTATE )
| + | r2 = Robot2Wheel( reverse_mot2 = True ) # inverser la commande du moteur moteur |
− | >>> r2.halt()</nowiki>
| + | r2.turn( Robot2Wheel.RIGHT_ROTATE ) |
| + | r2.halt() |
| + | </syntaxhighlight> |
| | | |
| Vous pouvez également indiquer une vitesse moteur durant la rotation. | | Vous pouvez également indiquer une vitesse moteur durant la rotation. |
− | | + | <syntaxhighlight lang="python"> |
− | <nowiki>>>> r2.turn( Robot2Wheel.RIGHT_ROTATE, speed=60 )</nowiki>
| + | r2.turn( Robot2Wheel.RIGHT_ROTATE, speed=60 ) |
| + | </syntaxhightlight> |
| | | |
| === La plateforme tourne dans le mauvais sens! === | | === La plateforme tourne dans le mauvais sens! === |
Ligne 150 : |
Ligne 167 : |
| Nous avons prévu un paramètre supplémentaire lors de la création de Robot2Wheel pour échanger le moteur1 et moteur2 de façon logiciel. | | Nous avons prévu un paramètre supplémentaire lors de la création de Robot2Wheel pour échanger le moteur1 et moteur2 de façon logiciel. |
| | | |
− | <nowiki>>>> r2 = Robot2Wheel( fix_rotate = True )</nowiki>
| + | <syntaxhighlight lang="python"> |
| + | r2 = Robot2Wheel( fix_rotate = True ) |
| + | </syntaxhighlight> |
| | | |
| Après cela, la plateforme tournera dans le bon sens. | | Après cela, la plateforme tournera dans le bon sens. |
Ligne 170 : |
Ligne 189 : |
| Comme pour la marche avant/arrière, vous avez la possibilité d'indiquer une vitesse (par défaut c'est 100%). | | Comme pour la marche avant/arrière, vous avez la possibilité d'indiquer une vitesse (par défaut c'est 100%). |
| | | |
− | <nowiki>>>> from r2wheel import Robot2Wheel
| + | <syntaxhighlight lang="python"> |
− | >>> from pyb import delay
| + | from r2wheel import Robot2Wheel |
− | >>> r2 = Robot2Wheel( reverse_mot2 = True ) # inverser la commande du moteur moteur
| + | from pyb import delay |
− | >>> r2.turn( Robot2Wheel.RIGHT_ROTATE )
| + | r2 = Robot2Wheel( reverse_mot2 = True ) # inverser la commande du moteur moteur |
− | >>> delay( 1500 ) # pendant 1.5 secondes
| + | r2.turn( Robot2Wheel.RIGHT_ROTATE ) |
− | >>> r2.forward()
| + | delay( 1500 ) # pendant 1.5 secondes |
− | >>> delay( 5000 )
| + | r2.forward() |
− | >>> r2.turn( Robot2Wheel.LEFT_ROTATE, speed=80 )
| + | delay( 5000 ) |
− | >>> r2.forward()
| + | r2.turn( Robot2Wheel.LEFT_ROTATE, speed=80 ) |
− | >>> delay( 5000 )
| + | r2.forward() |
− | >>> r2.halt()</nowiki>
| + | delay( 5000 ) |
| + | r2.halt() |
| + | </syntaxhighlight> |
| | | |
| Vous pourriez obtenir le même résultat avec les méthodes {{fname|right()}} et {{fname|left()}}. | | Vous pourriez obtenir le même résultat avec les méthodes {{fname|right()}} et {{fname|left()}}. |
| | | |
− | <nowiki>>>> from r2wheel import Robot2Wheel
| + | <syntaxhighlight lang="python"> |
− | >>> from pyb import delay
| + | from r2wheel import Robot2Wheel |
− | >>> r2 = Robot2Wheel( reverse_mot2 = True ) # inverser la commande du moteur moteur
| + | from pyb import delay |
− | >>> r2.right()
| + | r2 = Robot2Wheel( reverse_mot2 = True ) # inverser la commande du moteur moteur |
− | >>> delay( 1500 ) # pendant 1.5 secondes
| + | r2.right() |
− | >>> r2.forward()
| + | delay( 1500 ) # pendant 1.5 secondes |
− | >>> delay( 5000 )
| + | r2.forward() |
− | >>> r2.left( speed=80 )
| + | delay( 5000 ) |
− | >>> r2.forward()
| + | r2.left( speed=80 ) |
− | >>> delay( 5000 )
| + | r2.forward() |
− | >>> r2.halt()</nowiki>
| + | delay( 5000 ) |
| + | r2.halt() |
| + | </syntaxhighlight> |
| | | |
| === Les virages === | | === Les virages === |
Ligne 211 : |
Ligne 234 : |
| Lorsqu'il n'y a qu'un seul paramètre de vitesse, ce paramètre {{fname|speed}} mentionne la différence de vitesse entre les deux moteurs. | | Lorsqu'il n'y a qu'un seul paramètre de vitesse, ce paramètre {{fname|speed}} mentionne la différence de vitesse entre les deux moteurs. |
| | | |
− | <nowiki>>>> from r2wheel import Robot2Wheel
| + | <syntaxhighlight lang="python"> |
− | >>> from pyb import delay
| + | from r2wheel import Robot2Wheel |
− | >>> r2 = Robot2Wheel()
| + | from pyb import delay |
− | >>> r2 = Robot2Wheel( reverse_mot2 = True ) # inverser la commande du moteur moteur
| + | r2 = Robot2Wheel() |
− | >>> r2.turn(Robot2Wheel.RIGHT_BEND, speed=40)
| + | r2 = Robot2Wheel( reverse_mot2 = True ) # inverser la commande du moteur moteur |
− | >>> delay( 15000 )
| + | r2.turn(Robot2Wheel.RIGHT_BEND, speed=40) |
− | >>> r2.forward()
| + | delay( 15000 ) |
− | >>> delay( 5000 )
| + | r2.forward() |
− | >>> r2.halt()</nowiki>
| + | delay( 5000 ) |
| + | r2.halt() |
| + | </syntaxhighlight> |
| | | |
| Il est également possible de contrôler la vitesse du mobile durant un virage en précisant 2 vitesses. Lorsqu'il y a deux vitesses mentionnées: la vitesse globale du mobile est précisée avec {{fname|speed}}, puis la différence de vitesse entre les deux moteurs dans {{fname|speed2}}. | | Il est également possible de contrôler la vitesse du mobile durant un virage en précisant 2 vitesses. Lorsqu'il y a deux vitesses mentionnées: la vitesse globale du mobile est précisée avec {{fname|speed}}, puis la différence de vitesse entre les deux moteurs dans {{fname|speed2}}. |
| | | |
− | <nowiki>>>> from r2wheel import Robot2Wheel
| + | <syntaxhighlight lang="python"> |
− | >>> from pyb import delay
| + | from r2wheel import Robot2Wheel |
− | >>> r2 = Robot2Wheel()
| + | from pyb import delay |
− | >>> r2 = Robot2Wheel( reverse_mot2 = True ) # inverser la commande du moteur moteur
| + | r2 = Robot2Wheel() |
− | >>> r2.turn(Robot2Wheel.LEFT_BEND, speed=70, speed2=40)
| + | r2 = Robot2Wheel( reverse_mot2 = True ) # inverser la commande du moteur moteur |
− | >>> delay( 15000 )
| + | r2.turn(Robot2Wheel.LEFT_BEND, speed=70, speed2=40) |
− | >>> r2.forward()
| + | delay( 15000 ) |
− | >>> delay( 5000 )
| + | r2.forward() |
− | >>> r2.halt()</nowiki>
| + | delay( 5000 ) |
| + | r2.halt() |
| + | </syntaxhighlight> |
| | | |
| Dans l'exemple ci-dessus, nous tournons à gauche avec une vitesse globale du mobile de 70% et une différence de vitesse de 40%. Le moteur droit fonctionne donc à 70% et le moteur gauche à 70%-40%, soit 30%. | | Dans l'exemple ci-dessus, nous tournons à gauche avec une vitesse globale du mobile de 70% et une différence de vitesse de 40%. Le moteur droit fonctionne donc à 70% et le moteur gauche à 70%-40%, soit 30%. |
Ligne 263 : |
Ligne 290 : |
| Voici deux exemple avec corrige de dérive, l'un appliquée sur un moteur... et l'autre sur l'autre moteur: | | Voici deux exemple avec corrige de dérive, l'un appliquée sur un moteur... et l'autre sur l'autre moteur: |
| | | |
− | <nowiki>>>> robot = Robot2Wheel( reverse_mot2 = True, derivative_fix = 5 )
| + | <syntaxhighlight lang="python"> |
− | >>> robot.forward()
| + | robot = Robot2Wheel( reverse_mot2 = True, derivative_fix = 5 ) |
− | >>> delay( 15000 )
| + | robot.forward() |
− | >>> robot.halt()</nowiki>
| + | delay( 15000 ) |
| + | robot.halt() |
| + | </syntaxhighlight> |
| | | |
− | <nowiki>>>> robot = Robot2Wheel( reverse_mot2 = True, derivative_fix = -3 )
| + | <syntaxhighlight lang="python"> |
− | >>> robot.forward()
| + | robot = Robot2Wheel( reverse_mot2 = True, derivative_fix = -3 ) |
− | >>> delay( 15000 )
| + | robot.forward() |
− | >>> robot.halt()</nowiki>
| + | delay( 15000 ) |
| + | robot.halt() |
| + | </syntaxhighlight> |
| | | |
| ==== D'autres options ==== | | ==== D'autres options ==== |