Projet 2 – Activité 4

”DEL RVB – Synthèse additive des couleurs

 

 

Objectif

Cette activité est une application directe des activités précédentes. Nous allons utiliser 3 potentiomètres respectivement connectés aux entrées analogiques A2, A1 et A0 de l’Arduino pour régler les luminosités des DELs Rouge, Verte et Bleue d’une DEL RVB à cathode commune.

En effet, une DEL RVB à cathode commune dispose de 4 broches, 1 cathode et 3 anodes. Chaque anode correspond à une couleur (Rouge, Vert et Bleu).

En modulant les signaux sur les anodes, il est possible d’obtenir de multiples couleurs avec la DEL RVB. C’est le principe de la synthèse additive des couleurs des pixels des écrans d’ordinateur ou de télévision (rappels sur la synthèse additive des couleurs).


Le code de l’activité permet :

– Dans un premier temps, d’allumer la DEL RVB en appuyant sur le bouton poussoir,

– de faire varier la luminosité des DELs en fonction de la tension des entrées A2, A1 et A0,

– d’éteindre la DEL RVB en appuyant de nouveau sur le bouton poussoir.

 

Le programme

. Programme en Python (”Projet2/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 = 11 (constante correspondant au n° de la broche sur laquelle la DEL rouge est connectée)

. PinLEDV = 9 (constante correspondant au n° de la broche sur laquelle la DEL verte est connectée)

. PinLEDB = 10 (constante correspondant au n° de la broche sur laquelle la DEL bleue est connectée)

. PinPOTR = 2 (constante correspondant au n° de la broche sur laquelle le potentiomètre de le DEL rouge est connecté)

. PinPOTV = 1 (constante correspondant au n° de la broche sur laquelle le potentiomètre de le DEL verte est connecté)

. PinPOTB = 0 (constante correspondant au n° de la broche sur laquelle le potentiomètre de le DEL bleue est connecté)

. 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)

. BrightnessR = 0 (variable correspondant à la luminosité de la DEL rouge)

. BrightnessB = 0 (variable correspondant à la luminosité de la DEL bleue)

. BrightnessV = 0 (variable correspondant à la luminosité de la DEL verte)

. 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 des broches des potentiomètres en entrées analogiques :

PinAnalogInputR = AnalogInput(board, PinPOTR) PinAnalogInputV = AnalogInput(board, PinPOTV)
PinAnalogInputB = AnalogInput(board, PinPOTB)

– Déclaration des broches de la DEL RVB en sorties analogiques :

PinAnalogOutputR = AnalogOutput(board, PinLEDR)
PinAnalogOutputV = AnalogOutput(board, PinLEDV)
PinAnalogOutputB = AnalogOutput(board, PinLEDB)

– Attente de 500 ms pour le lancement de l’itérateur

Boucle principale du programme (boucle ”while True”) :

 

. Programme en langage Arduino (”Projet2/Activity4/INO/Activity4.ino”)

Déroulement du programme :