Code source du dé électronique

Retour à la page du projet

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);
	}
}