Dans ce projet on réalise un dé électronique qui se déclenche par passage de la main au dessus d'une photorésistance.
Une photorésistance est un composant électronique dont la résistance varie en fonction de la luminosité : plus la luminosité est forte plus la résistance diminue. Pour pouvoir l'utiliser on effectue le montage suivant :
ATTENTION : La résistance utilisée est une résistance de 10 K$\Omega$ (anneaux brun, noir, orange), à ne pas confondre avec les résistances de 330 $\Omega$ utilisées avec les LED.
Avec ce montage la tension sur « Analog in » (entrée analogique) varie en fonction de la lumière captée par la photorésistance.
Sur le module Arduino UNO il y a 6 entrées analogiques. Chaque entrée peut recevoir une tension comprise entre 0 et 5V.
La tension reçue est convertie proportionnellement en nombre entier codé sur 10 bits (valeurs de 0 à 1023).
L'instruction analogRead(broche)
permet de récupérer cette valeur dans un programme.
Pour tester le fonctionnement de la photorésistance on la branche sur l'entrée analogique 0
(notée A0
sur le module Arduino) et on réalise un programme capable d'afficher en temps réel le niveau de luminosité en utilisant la communication série.
Le module Arduino communique avec l'ordinateur par son interface série (via le cable USB).
C'est comme cela que se réalise le transfert d'un programme vers le module Arduino avec le bouton « Téléverser ». Il est
également possible de faire une communication série « interactive » en utilisant le moniteur série du logiciel de programmation (accessible depuis le menu Outils
).
Le programme suivant met en oeuvre ce dispositif :
void setup(){
Serial.begin(9600);
}
void loop(){
Serial.println(analogRead(0));
delay(500);
}
Depuis le module Arduino, le pilotage de l'interface série se fait avec la librairie Serial
.
La vitesse de transmission des données est fixée à 9600 bits par seconde par la commande
Serial.begin(9600)
, le moniteur série de l'ordinateur doit être réglé sur la même vitesse pour que la communication puisse se faire.
L'instruction Serial.println(...)
permet d'envoyer des données depuis la carte Arduino vers le moniteur série. Ici on envoie
la valeur de luminosité obtenue sur l'entrée analogique 0 (analogRead(0)
).
Au final le programme envoie toutes les 500 ms vers le moniteur série la valeur de luminosité lue sur l'entrée analogique 0.
Sur cette copie d'écran du moniteur série, les valeurs autour de 680 correspondent aux valeurs lues sur l'entrée analogique lorsque la photorésistance est exposée à la lumière ambiante et les valeurs autour de 240 correspondent aux valeurs lues sur l'entrée analogique lorsque la main cache le capteur. Ces valeurs peuvent être différentes selon la luminosité de la pièce.
Sur le montage précédent on ajoute la matrice du dé composée de 7 LED. Les cathodes (pattes courtes) des LED sont reliées à des résistances de 330 $\Omega$ elles-mêmes reliées ensemble à une borne GND
du module Arduino. Les anodes des LED sont reliées aux broches numériques 2 à 8.
Techniquement, le passage de la main fait passer le capteur de l'ombre à la lumière ce qui déclenche le tirage au sort d'un nombre au hasard entre 1 et 6 et son affichage sur les LED pendant, disons, 2 secondes (puis toutes les LED s'éteignent).
Le code du programme est organisé en 4 fonctions : les 2 fonctions obligatoires habituelles
(setup
et loop
) et 2 autres fonctions :
la fonction afficheDe
qui s'occupe d'afficher sur les LED le motif correspondant au nombre passé en paramètre, pour programmer cette fonction on utilise le schéma de branchement des LED :
la fonction eteintDe
qui éteint toutes les LED.
Cette organisation permet de scinder le projet en plusieurs parties programmables indépendamment les unes des autres ce qui donne donne un code plus facile à réaliser et à tester.