DEUX DES ARDUINO / CONCEPTION
Tutorial pour un dés seul
Organisation des leds :
Un dé est composé de 7 leds. Chaque led est reliée à une sortie Arduino.Voila à quoi ça ressemble :
Ce dispositif permet d'afficher un dé. Voici l'exemple image et script qui fonctionne avec ce dispositif:
Dispositif Arduino 1 dé
Sketch Arduino Uno 1 dé
/****************************************************************************************
------------------------------------- Programme 1 dés ----------------------------------------------
Déclaration des variables
ButPin pour le bouton
etat pour le resultat du bouton
dede est un tableau contenant les positions
des 7 leds pour toutes les combinaisons d'un dés
organisation des dès avec sorties :
led-pin relationships: 6 4
7 5 3
8 2
*****************************************************************************************/
int butPin = 9;
int etat =0;
byte dede[8][7] ={
//2 3 4 5 6 7 8 numéro des pins associés aux leds
{0,0,0,0,0,0,0}, // 0 rien
{0,0,0,1,0,0,0}, // 1
{1,0,0,0,1,0,0}, // 2
{0,0,1,1,0,0,1}, // 3
{1,0,1,0,1,0,1}, // 4
{1,0,1,1,1,0,1}, // 5
{1,1,1,0,1,1,1}, // 6
{1,1,1,1,1,1,1}, // 7 tout
};
// initialisation partie du programme qui s'execute une fois
void setup()
{
int i; // utilisé pour la boucle qui suit
// initialisation des pins 2 à 8 pour les leds
for (i=2; i<9; i++) pinMode(i,OUTPUT); // led pins
pinMode(butPin,INPUT); // initialisation du bouton switch
turnOnNumber(0); // extinction des leds
randomSeed(analogRead(0)); // initialise le random astuce pour avoir un vrai random
Serial.begin(9600);
}
void loop()
{
int n;
int loto;
int resultat = 10;
int ancienresultat = 10; // empeche deux fois le meme nombre
// lecture du bouton
etat= digitalRead(butPin);
if ( etat == HIGH)
{
turnOnNumber(7);
delay(500);
turnOnNumber(0);
delay(500);
loto = random(5,30);
for (n=2; n <loto;n++)
{
while (resultat == ancienresultat) resultat=random(1,7);
turnOnNumber(resultat);
ancienresultat=resultat;
delay(500-((loto-n)*20));
}
}
}
// ***** set up leds corresponding the number *****
void turnOnNumber(int n)
{
int i;
for(i=0;i<7;i++) //n en décalage de 1 lié à la gestion tableau qui commence à0
{
if (dede[n][i]==0) digitalWrite(i+2, LOW);
else digitalWrite(i+2, HIGH);
}
} //******************************************* FIN DU PROGRAMME ********************************
La suite affichage de deux dés
Aucun commentaire:
Enregistrer un commentaire