Afficher/Masquer les commentaires
La constante ECART permet de régler la sensibilité du dispositif :
il faut une différence de valeur de luminosité supérieure à ECART pour déclencher le dé.
La constante TEMPO définit le temps d'allumage du dé.
const int ECART=100;
const int TEMPO=2000;La fonction setup est exécutée une fois au démarrage du module.
void setup(){L'instruction randomSeed permet d'initialiser le générateur aléatoire avec une valeur au hasard.
La valeur au hasard est obtenue en lisant la valeur sur la broche analogique 1 :
cette broche n'étant pas connectée, elle capte « un peu tout ce qui passe dans l'air »
et la valeur retournée fluctue aléatoirement.
Si on ne fait pas cela l'instruction random utilisée ci-après retourne toujours la même
séquence de nombres à chaque redémarrage du module Arduino.
randomSeed(analogRead(1));Les broches sur lesquelles sont branchées les LED sont mises en mode OUTPUT.
for(int i=2;i<=8;i++){
pinMode(i,OUTPUT);
}
}La fonction loop est exécutée en boucle.
void loop(){On capte 2 valeurs de luminosité à 100 ms d'intervalle.
int luminosite1=analogRead(0);
delay(100);
int luminosite2=analogRead(0);Ce test permet de déclencher le dé si la différence de luminosité entre les deux valeurs
captées est supérieure à ECART. Cela se produit lorsque luminosite2 est supérieur à luminosite1
de plus de ECART, donc lorsque le capteur passe de l'ombre à la lumière de façon significative.
if(luminosite2-luminosite1>ECART){On affiche sur les LED un nombre au hasard entre 1 et 6.
Note : l'instruction random(a,b) renvoie un nombre entier aléatoire compris
entre a inclus et b exclu, c'est pourquoi on écrit random(1,7)
pour avoir un nombre au hasard entre 1 et 6.
afficheDe(random(1,7));Les LED restent allumées durant TEMPO ms puis le dé s'éteint
delay(TEMPO);
eteintDe();
}
}Le rôle de cette fonction est d'allumer les LED correspondant au nombre
passé en paramètre. La mise en HIGH des bornes est effectuée selon le schéma
de montage des LED sur les bornes 2 à 8 du module Arduino.
void afficheDe(int nombre){
if(nombre==1){
digitalWrite(5,HIGH);
}
if(nombre==2){
digitalWrite(2,HIGH);
digitalWrite(8,HIGH);
}
if(nombre==3){
digitalWrite(2,HIGH);
digitalWrite(5,HIGH);
digitalWrite(8,HIGH);
}
if(nombre==4){
digitalWrite(2,HIGH);
digitalWrite(4,HIGH);
digitalWrite(6,HIGH);
digitalWrite(8,HIGH);
}
if(nombre==5){
digitalWrite(2,HIGH);
digitalWrite(4,HIGH);
digitalWrite(6,HIGH);
digitalWrite(8,HIGH);
digitalWrite(5,HIGH);
}
if(nombre==6){
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
}
}Dans cette fonction toutes les LED utilisées pour le dé sont éteintes.
void eteintDe(){
for(int i=2;i<=8;i++){
digitalWrite(i,LOW);
}
}