Voici un programme synchone pour permettre de gérer les flèches avec le clavier :
Page de Wikipedia sur le sheban : https://fr.wikipedia.org/wiki/Shebang
#!/usr/bin/python3 import RPi.GPIO as GPIO import time #bibliothèque de gestion des touches en ligne de commandes import click GPIO.setwarnings(False) def flecheAvancer(): print("a") GPIO.output(fleche["avancer"],GPIO.HIGH) time.sleep(temporisation) GPIO.output(fleche["avancer"],GPIO.LOW) def flecheReculer(): print("r") GPIO.output(fleche["reculer"],GPIO.HIGH) time.sleep(temporisation) GPIO.output(fleche["reculer"],GPIO.LOW) def flecheDroite(): print("d") GPIO.output(fleche["droite"],GPIO.HIGH) time.sleep(temporisation) GPIO.output(fleche["droite"],GPIO.LOW) def flecheGauche(): print("g") GPIO.output(fleche["gauche"],GPIO.HIGH) time.sleep(temporisation) GPIO.output(fleche["gauche"],GPIO.LOW) # Utiliser la numerotation electronique du GPIO GPIO.setmode(GPIO.BCM) # définir les broches du GPIO a utiliser en sortie dans un tableau associatif fleche={"avancer":16, "reculer":19, "droite":13, "gauche":26} # Configurer les broches en sortie GPIO.setup(fleche["avancer"],GPIO.OUT) GPIO.setup(fleche["reculer"],GPIO.OUT) GPIO.setup(fleche["droite"],GPIO.OUT) GPIO.setup(fleche["gauche"],GPIO.OUT) temporisation = 3 # variable utilisee pour terminer la boucle While continuer=1 while continuer : key = click.getchar() if key=='p' : flecheAvancer() if key=='l' : flecheReculer() if key=='a' : flecheGauche() if key=='e' : flecheDroite() if key=='q': #permettre de quitter la boucle while continuer=0 GPIO.cleanup()
En exécutant ce programme synchrone, l'appui sur une touche lance l'éclairage de la flèche correspondante pendant 3 secondes. Pendant ce laps de temps, il n'est pas possible de lancer l'éclairage d'un autre flèche car le programme attend la fin de la temporisation.