Skip to content

video not played or not found error
click on direct switch

Hosted by Dailymotion. For legal issues: Copyright Center · DMC · Instant Removal

Hippodrome simple avec Pygmy Forth

K
kurt_aga

9 Views • Dec 10, 2024

Description

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 )