Table des matières

De electronique avec un arduino

un_de_electronique.ino
//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);
	}
}