”Allumer en alternance ou éteindre 3 DELs
avec un bouton-poussoir”
![](https://www.ardpylab.fr/wp-content/uploads/2020/04/projet1-circuit5.png)
. Objectif
Dans cette activité, l’allumage en alternance des DELs est géré par le bouton poussoir. Un premier appui sur le bouton allume la diode rouge, un deuxième appui allume la diode verte, un troisième appui allume la diode bleue et ainsi de suite…
Un appui prolongé sur le bouton éteint la DEL allumée.
Comme pour l’activité précédente, c’est à l’aide des variables permettant de stocker les valeurs (actuelle et précédente) de l’état logique de la broche du bouton poussoir, mais aussi d’une variable pour compter le nombre d’appui sur le bouton et de variables pour mesurer la durée d’appui, que l’Arduino pourra allumer ou éteindre les DELs.
Le code pourra être modifié pour voir l’influence des variables (durée d’appui pour éteindre les DELS).
. Le programme
. Programme en Python (”Projet1/Activity4/PY/Activity4.py”)
Déroulement du programme :
– Importation des librairies et définition de fonctions :
. Le module ”ConnectToArduino.py”, contenant les fonctions de connexion à l’Arduino via le protocole ”Firmata standard”,
. Le module ”PyFirmataDef.Py” regroupant toutes les fonctions utiles à l’utilisation de ”PyFirmata” (fonction de déclaration des entrées et sorties, d’itérateur, d’écritures…)
. La bibliothèque ”time” pour la gestion des temps de pause.
– Déclaration des constantes et variables :
. PinLEDR = 8 (constante correspondant au n° de la broche sur laquelle la DEL rouge est connectée)
. PinLEDV = 7 (constante correspondant au n° de la broche sur laquelle la DEL verte est connectée)
. PinLEDB = 2 (constante correspondant au n° de la broche sur laquelle la DEL bleue est connectée)
. PinButton = 12 (cst correspondant au n° de la broche sur laquelle le bouton poussoir est connecté)
. ValButton = 0 (variable pour stocker la valeur de l’état logique de la broche du bouton poussoir)
. OldValButton = 0 (variable pour stocker la valeur précédente de l’état logique de la broche du bouton poussoir)
. ComptBtn = 0 (variable permettant de comptabiliser le nombre de fois que le bouton-poussoir est appuyé)
. StartTime = 0 (variable pour stocker l’heure de début d’appui sur le bouton-poussoir)
. DeltaTime = 0 (variable pour calculer la durée d’appui sur le bouton-poussoir)
. PortComArduino (port COM sur lequel l’Arduino est connecté)
– Connexion à l’Arduino :
. Détection du port COM, tentative d’ouverture du port COM sélectionné et connexion à l’Arduino:
PortComArduino = SelectPortCOM()
board = OpenPortCom(PortComArduino)
. Si la connexion à l’Arduino est réussie:
– Lancement de l’itérateur :
ArduinoIterateur = Iterateur(board),
– Déclaration de la broche du bouton poussoir en entrée digitale :
InputPin = DigitalInput(board, PinButton),
– Attente de 500 ms pour le lancement de l’itérateur
– Boucle principale du programme (boucle ”while True”) :
![](https://www.ardpylab.fr/wp-content/uploads/2020/04/projet1-Activity4-2-893x1024.png)
. Programme en langage Arduino (”Projet1/Activity4/INO/Activity4.ino”)
Déroulement du programme :
![](https://www.ardpylab.fr/wp-content/uploads/2020/04/projet1-Activity4-4-663x1024.png)