======= De electronique avec un arduino ======= * [[http://sciences-du-numerique.fr/projet-arduino-pour-la-specialite-isn/de-electronique/41|Explications DE Electronique]] * Le programme //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); } }