======= De electronique avec un arduino =======

     * [[http://sciences-du-numerique.fr/projet-arduino-pour-la-specialite-isn/de-electronique/41|Explications DE Electronique]]

     * Le programme

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

</code>