Chapeau Ryanteck Traffic – GPIO Zero

Chapeau Ryanteck Traffic GPIO Zero.jpgv1561727098
Chapeau Ryanteck Traffic GPIO Zero.jpgv1561727098

Dans la continuité du tutoriel précédent de clignotement d’une LED à l’aide de GPIO Zero, nous allons développer la création d’un programme de feux de signalisation.

Cependant, au lieu d’utiliser les modules séparés pour la LED et le buzzer, il existe une manière plus nette de le faire en utilisant la fonction complémentaire TrafficHAT.

Commencez par ajouter le code suivant pour configurer TrafficHAT en remplaçant Ryan Walmsley par votre nom.

#TrafficHAT Program

#TrafficLight By Ryan Walmsley

 

 

from gpiozero import TrafficHat

from time import sleep

 

th=TrafficHat()

Enregistrez-le ensuite sous traffichat-trafficlight.py dans votre répertoire personnel (/ home / pi en standard). Continuez à économiser en cours de route.

La principale différence ici est qu’au lieu d’importer une LED, un bouton ou un buzzer, nous importons plutôt TrafficHat.

Cela signifie que les LED rouge, verte et ambre sont déjà pré-affectées, au lieu d’avoir à effectuer les opérations suivantes pour la LED orange:

amber = LED(23)

 

amber.on()

Nous pouvons simplement faire ce qui suit:

#Amber on

th.amber.on()

Ou pour le faire clignoter plusieurs fois de suite comme le tutoriel précédent:

#Amber blink

th.amber.blink(1,1,10,False)

Depuis ce bâtiment, le reste du programme est très simple.

Nous voulons commencer par décrire la base du programme. Ajoutez ce qui suit au bas de votre programme actuel.

try:

	while True:

		#TrafficLight Code

 

 

except KeyboardInterrupt:

	exit()

Cette base de code exécutera à jamais le programme jusqu’à ce que vous appuyiez sur Ctrl-c. Une fois que Ctrl-c est enfoncé, le programme se fermera correctement et toutes les LED et le buzzer s’éteindront.

Ensuite, tout le code suivant ira sous la ligne de code #TrafficLight plutôt qu’en bas et devrait être mis en retrait au même niveau

Maintenant, nous voulons faire ce qui suit pour notre programme:

  1. Allumez la LED verte
  2. Attendez que le bouton soit enfoncé
  3. Éteignez la LED verte
  4. Allumez le voyant orange
  5. Attendez 2 secondes
  6. Éteignez le voyant orange
  7. Allumez la LED rouge
  8. Buzz ou « Blink » le buzzer 15 fois avec un retard de 0,1 seconde.
  9. Dormez 1 seconde
  10. Éteignez la LED rouge
  11. Clignote la LED orange 6 fois avec un délai de 0,5 seconde.

Commençons!

Pour allumer la LED verte, ajoutez la ligne suivante à votre code

th.green.on()

L’utilisation de la bibliothèque GPIO Zero a rendu cela très facile à faire. Nous commençons juste avec l’objet pour le TrafficHAT qui est e , adresse le LED verte, puis utilisez les LED vertes sur une fonction.

Ensuite, nous voulons attendre que le bouton soit enfoncé. Nous utilisons un peu de code pour ce faire.

while(th.button.is_pressed == False):

			#While not pressed do nothing

			pass

		#Button has been pressed!

Passons en revue ce que fait ce morceau de code: il vérifie d’abord que, même si le bouton n’est pas enfoncé, il est correct. Nous le faisons en vérifiant si la variable is_pressed du bouton est False. Lorsque le bouton n’est pas enfoncé, il sera Faux, d’où l’instruction True. Lorsque le bouton est enfoncé, TrafficHAT retournera True et rendra la déclaration fausse.

Alors que la déclaration est vraie, le programme python exécute la commande pass qui ne fait rien. Cependant, si nous n’y mettons pas de laissez-passer, le programme ne fonctionnera pas.

Une fois le bouton enfoncé, la boucle while est fermée et le programme continue.

Ensuite, nous voulons éteindre la LED verte. Nous faisons cela de la même manière que nous l’avons allumé mais au lieu d’utiliser sur nous utilisons de’

th.green.off()

Et puis allumez la LED orange. Vous pouvez le faire en modifiant le code de la LED verte.

Ensuite, nous voulons ensuite faire attendre le programme ou dormir pendant 2 secondes. Nous le faisons en utilisant le code suivant:

sleep(2)

Vous pouvez également modifier le 2 pour n’importe quel nombre de secondes pour le délai.

Maintenant, le voyant orange est allumé depuis 2 secondes, nous voulons ensuite le tourner de puis tourner sur la LED rouge.

Maintenant, la LED rouge est allumée, nous voulons ensuite faire retentir le buzzer. Pour ce faire, nous utilisons la fonction de clignotement.

Voici la ligne de code:

th.buzzer.blink(0.1,0.1,15,False)

Comme vous pouvez le voir, nous avons défini quelques variables pour la fonction de clignotement. Ce sont: Le temps de marche: La durée pendant laquelle le buzzer ou la LED est allumé. Dans ce cas, 0,1 seconde Le temps d’arrêt: La durée pendant laquelle le buzzer ou la LED est ensuite éteint. Dans ce cas également 0,1 seconde. N – Itérations: Le nombre de fois où le buzzer ou la LED clignote ou vibre. Dans ce cas, il bouclera 15 fois. Threaded / Background: La dernière variable est la météo pendant laquelle elle clignote ou bourdonne en arrière-plan. Supposons que vous vouliez qu’il bourdonne pendant que votre programme fait encore quelque chose que vous définiriez sur True. Cependant, nous voulons que notre programme s’arrête pendant que cela se produit, nous le réglons donc sur Faux.

Ensuite, nous voulons ensuite dormir à nouveau pendant 1 seconde, puis tourner la LED rouge de.

Enfin, nous voulons ensuite répéter la même fonction de clignotement pour le buzzer mais au lieu d’utiliser le buzzer, nous voulons le changer en orange.

Et votre programme devrait maintenant être prêt à démarrer!

Enregistrez-le et exécutez le programme en ouvrant une fenêtre de terminal et en tapant « python3 traffichat-trafficlight.py ».

Si votre programme ne fonctionne pas, vous pouvez le comparer à notre code de démonstration situé ici:

#TrafficHAT Program

#TrafficLight by Ryan Walmsley

 

 

from gpiozero import TrafficHat

from time import sleep

th = TrafficHat()

 

try:

	while True:

		#TrafficLight Code

		#First turn the Green LED On

		th.lights.green.on()

		#Next we want to wait until the button is pressed.

		while(th.button.is_pressed == False):

			#While not pressed do nothing

			pass

		#Button has been pressed!

		th.lights.green.off()

		#Amber on for a couple of seconds

		th.lights.amber.on()

		sleep(2)

		th.lights.amber.off()

		#Turn the red on

		th.lights.red.on()

		#Buzz the buzzer 20 times with 0.1 second intervals

		th.buzzer.blink(0.1,0.1,20,False)

		sleep(1)

		th.lights.red.off()

		#Red off and blink amber 4 times with 0.5 second intervals

		th.lights.amber.blink(0.5,0.5,4,False)

 

 

 

 

 

except KeyboardInterrupt:

	exit()