Pour avoir un déplacement satisfaisant avec une bonne précision et le moins possible d'à-coups, il faut modifier les primitives python qui correspondent aux déplacement et au rotations. On va prter la fréquence à 0,01 seconde.
Il faut aussi modifier quelques primitive PygmyForth.
Deux nouvelles primitive python sont installées : MotorAvGl.fth, pour marche avant du moteur gauche, et MotorAvDw.fth, pour marche avant du moteur droit.
Exemple de modifications des primitives python.
CODE MOTORAV
import RPi.GPIO as GPIO
from time import sleep
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
GPIO.setup(11, GPIO.OUT)
GPIO.setup(13, GPIO.OUT)
GPIO.setup(7, GPIO.OUT)
GPIO.setup(8, GPIO.OUT)
GPIO.setup(10, GPIO.OUT)
GPIO.setup(12, GPIO.OUT)
pw0=GPIO.PWM(7,100)
pw1=GPIO.PWM(12,100)
pw0.start(0)
pw1.start(0)
GPIO.output(11, True)
GPIO.output(13, False)
pw0.ChangeDutyCycle(70)
GPIO.output(7, True)
GPIO.output(8, True)
GPIO.output(10, False)
pw1.ChangeDutyCycle(70)
GPIO.output(12, True)
sleep(.01)#la fréquence est de 0,01 seconde
GPIO.output(7, False)
pgl.stop()
GPIO.cleanup()
END-CODE
( applications )
( hippodrome )
: turnd 5 FOR MOTORAVGL NEXT ; ( on compte 5 boucles )
: turng 5 FOR MOTORAVDW NEXT ; ( on compte 5 boucles )
: LFSL ( -- ) BEGIN INITLF1 INITLF2 AND 0= IF MOTORAV ( utilise cette primitive qui donne un déplacement en ligne droite régulier )
THEN ( fin du branchement conditionnel )
INITLF2 1 = IF turnd ( si le deuxième capteur lit un, petit coup à droite )
THEN ( fin du branchement conditionnel )
INITLF1 1 = IF turng ( si le premier capteur lit un, petit coup à gauche )
THEN ( fin du branchement conditionnel )
AGAIN ( la boucle repart )
; ( fin de code )
: Z LFSL ; ( raccourci )
Il faut aussi modifier quelques primitive PygmyForth.
Deux nouvelles primitive python sont installées : MotorAvGl.fth, pour marche avant du moteur gauche, et MotorAvDw.fth, pour marche avant du moteur droit.
Exemple de modifications des primitives python.
CODE MOTORAV
import RPi.GPIO as GPIO
from time import sleep
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
GPIO.setup(11, GPIO.OUT)
GPIO.setup(13, GPIO.OUT)
GPIO.setup(7, GPIO.OUT)
GPIO.setup(8, GPIO.OUT)
GPIO.setup(10, GPIO.OUT)
GPIO.setup(12, GPIO.OUT)
pw0=GPIO.PWM(7,100)
pw1=GPIO.PWM(12,100)
pw0.start(0)
pw1.start(0)
GPIO.output(11, True)
GPIO.output(13, False)
pw0.ChangeDutyCycle(70)
GPIO.output(7, True)
GPIO.output(8, True)
GPIO.output(10, False)
pw1.ChangeDutyCycle(70)
GPIO.output(12, True)
sleep(.01)#la fréquence est de 0,01 seconde
GPIO.output(7, False)
pgl.stop()
GPIO.cleanup()
END-CODE
( applications )
( hippodrome )
: turnd 5 FOR MOTORAVGL NEXT ; ( on compte 5 boucles )
: turng 5 FOR MOTORAVDW NEXT ; ( on compte 5 boucles )
: LFSL ( -- ) BEGIN INITLF1 INITLF2 AND 0= IF MOTORAV ( utilise cette primitive qui donne un déplacement en ligne droite régulier )
THEN ( fin du branchement conditionnel )
INITLF2 1 = IF turnd ( si le deuxième capteur lit un, petit coup à droite )
THEN ( fin du branchement conditionnel )
INITLF1 1 = IF turng ( si le premier capteur lit un, petit coup à gauche )
THEN ( fin du branchement conditionnel )
AGAIN ( la boucle repart )
; ( fin de code )
: Z LFSL ; ( raccourci )
Category
🤖
Technologie