”Contrôler la luminosité d’une DEL avec un bouton-poussoir”
![](https://www.ardpylab.fr/wp-content/uploads/2020/04/projet2-circuit4.png)
. Objectif
Contrairement aux sorties numériques qui ne peuvent avoir que deux valeurs 0 ou 1 (0 ou 5V), une sortie analogique (ou plutôt PWM) permet d’obtenir une tension entre 0 et 5 V. les broches 3, 5, 6, 9, 10 et 11 peuvent être configurés en sortie analogique.
C’est pour cela que les anodes de la DEL RVB (à cathode commune) de notre circuit sont connectées sur les broches :
– 9 pour la DEL rouge
– 11 pour la DEL verte
– 10 pour la DEL Bleue
Nous allons utiliser ces sorties pour alimenter une DEL (DEL rouge, verte ou bleue de la DEL RVB) et faire varier sa luminosité suivant ce principe de fonctionnement :
– la DEL étant éteinte, si on appuie sur le bouton poussoir, la diode s’allume.
– On règle la luminosité de la DEL en maintenant le bouton poussoir appuyé, du moins au plus lumineux (broche de la DEL à +0V) jusqu’à un maximum (broche de la DEL à +5V).
– Quand le maximum de la luminosité est atteint et que le bouton poussoir est maintenu appuyé, la luminosité revient au minimum (broche de la DEL à 0V).
– La DEL étant allumée, si on appuie sur le bouton poussoir, elle s’éteint.
Le code pourra être modifié pour voir l’influence des variables (choix de la DEL).
. Le programme
. Programme en Python (”Projet2/Activity1/PY/Activity1.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 :
. PinLED = 11 (constante correspondant au n° de la broche sur laquelle la DEL choisie 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)
. State = 0 (variable correspondant à l’action à effectuer)
. Brightness = 0 (variable correspondant à la luminosité de la DEL)
. 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),
– Déclaration de la broche de la DEL en sortie analogique :
PinAnalogOutput = AnalogOutput(board, PinLED),
– 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/projet2-activity1-1-898x1024.png)
. Programme en langage Arduino (”Projet2/Activity1/INO/Activity1.ino”)
Déroulement du programme :
![](https://www.ardpylab.fr/wp-content/uploads/2020/04/projet2-activity1-4-671x1024.png)