lundi 28 juillet 2014

Deux dés Arduino / Conception / Page 1

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