top of page

Difficulté :

Durée :

Février 2017 , par Techno_fabrik

Dé à Cinq Faces [Lancer Aléatoire]

LE PROJET  

L'objectif est de réaliser une application permettant de reproduire un lancer de dés à 5 faces, à vitesse modulable à l'aide d'une commande ARDUINO, de LEDs et résistances.

MATERIEL:

5 Résistances ( 220 Ω optimales , allant jusqu'à 3kΩ)

5 LEDs

1 Module Arduino UNO

1 Bouton poussoir / Interrupteur / Switch

1 Plaquette d'essais

PRÉREQUIS :

Connaissance des risques électriques. Montage réalisable par tous. Notion d'électronique et bases en programmation.

RÉALISATION

ETAPE 1 :

Se munir du matériel adéquat et vérifier le bon fonctionnement de celui-ci.

ETAPE 2 :

Connecter le bouton poussoir pin 7 et à la masse.

 

ETAPE 3:

Pour chacune des leds, la relier à une résistance de 220 Ω et à la masse. Connectez l'autre broche au pin correspondant [ 2 à 6] .

 

PROGRAMME ( codé en C) :

// --------------------------------    LANCER D'UN DE A 5 FACES -  ARDUINO    -----------------------------------------
// Matériel : 5 leds, 5 résistances 220 Ohms , fils de connections 
// Objectif : Réaliser la fonction d'un dé à 5 faces:
//            - Avec un bouton poussoir, simuler le lancer : lorsque le bouton est à  :
//            - ETAT HAUT : lancer de dé, on affiche aléatoirement des chiffres entre 0 et 5 ( représenté par les leds ) 
//              à haute vitesse puis on ralentit jusqu'à s'arreter sur une valeur aléatoirement
//            - ETAT BAS :  on fait clignoter toutes les leds

// Date de réalisation 20/01/2017

// Réalisé par TechnoFABRIK

// ********************************** VARIABLES & BIBLIOTHEQUES *********************************************
//            Dans cette partie , nous déclarerons nos variables, et bibliothèques utilisées pour le programme 
int l;
int ledHautGauche = 2;
int ledBasGauche = 3;
int ledCentre = 4;
int ledHautDroite = 6;
int ledBasDroite = 5;
int poussoir =7;
// declaration du pin correspondant au bouton switch [ permettant de commencer le lancer de dé ]
int boolpoussoir;
int tim;
// sera place dans delay , permettra de changer la vitesse d'affichement des leds
void setup() {
  Serial.begin(9600);
  randomSeed(analogRead(0));
//initialise la séquence aléatoire
  for (int l = 2; l < 7; l++)
    { // boucle de 2 à 6
    pinMode(l, OUTPUT);
// mode OUTPUT
    digitalWrite(l, HIGH); // allumage
    pinMode(7, INPUT_PULLUP); //bouton poussoir input
    }
}


void loop() {
  int cpt=0;
// on configure un compteur, initialisé à 0
  tim=0; // on configure notre delay , initialisé à 0;
//affichage du nombre

  delay(1500);//attente initiale

boolean boolpoussoir = digitalRead(poussoir); // on configure notre interrupteur (ici, bouton poussoir)pour qu'il réponde en booéen

  if (boolpoussoir ==LOW) // si le bouton est sur I , on va afficher au hasard des chiffres, rapidement, puis de plus en plus lentement jusqu'à s'arreter

  {
            l = random(6);
//construit le nombre aléatoire

            while (cpt<=50) // boucle affichant à vitesse variable des chiffres au hasard
            {
                  tim=tim+5;
// à chaque nouvel affichage, le dé accélère de 5
                l = random(6);
                                                
 // si l = 0 on allume les leds adéquates, pour ne rien afficher, et ainsi de suite ...
                if (l == 0)
                {
                  for (int i = 2; i < 7; i++)
                  {
                    digitalWrite(i, LOW);
                  }
                   delay(tim);
                }
                if (l == 1)
                {
                  digitalWrite(4, HIGH);
                  digitalWrite(2, LOW);
                  digitalWrite(3, LOW);
                  digitalWrite(5, LOW);
                  digitalWrite(6, LOW);
                   delay(tim);
                }
                if (l == 2)
                {
                  digitalWrite(4, LOW);
                  digitalWrite(2, LOW);
                  digitalWrite(3, HIGH);
                  digitalWrite(6, LOW);
                  digitalWrite(5, HIGH);
                   delay(tim);
                }
                if (l == 3)
                {
                  digitalWrite(4, HIGH);
                  digitalWrite(2, LOW);
                  digitalWrite(3, HIGH);
                  digitalWrite(6, LOW);
                  digitalWrite(5, HIGH);
                   delay(tim);
                }
                if (l == 4)
                {
                  digitalWrite(4, LOW);
                  digitalWrite(2, HIGH);
                  digitalWrite(3, HIGH);
                  digitalWrite(5, HIGH);
                  digitalWrite(6, HIGH);
                   delay(tim);

                }
                if (l == 5)
                {
                  digitalWrite(4, HIGH);
                  digitalWrite(2, HIGH);
                  digitalWrite(3, HIGH);
                  digitalWrite(5, HIGH);
                  digitalWrite(6, HIGH);
                   delay(tim);
                }
               if (l==0 || l==1 || l==2 || l==3 || l==4 ||l==5)
               {
                 cpt=cpt+1;
// ici, on incrémente notre compteur

               }
    }
               l = random(6);
               if (l == 0)                                        
    // On lance une dernière fois le dé, et on l'affiche plus longtemps
                {
                  for (int i = 2; i < 7; i++)
                  {
                    digitalWrite(i, LOW);

                  }
                   delay(3000);
                }
                if (l == 1)
                {
                  digitalWrite(4, HIGH);
                  digitalWrite(2, LOW);
                  digitalWrite(3, LOW);
                  digitalWrite(5, LOW);
                  digitalWrite(6, LOW);
                   delay(3000);
                }
                if (l == 2)
                {
                  digitalWrite(4, LOW);
                  digitalWrite(2, LOW);
                  digitalWrite(3, HIGH);
                  digitalWrite(6, LOW);
                  digitalWrite(5, HIGH);
                   delay(3000);
                }
                if (l == 3)
                {
                  digitalWrite(4, HIGH);
                  digitalWrite(2, LOW);
                  digitalWrite(3, HIGH);
                  digitalWrite(6, LOW);
                  digitalWrite(5, HIGH);
                  delay(3000);
                }
                if (l == 4)
                {
                  digitalWrite(4, LOW);
                  digitalWrite(2, HIGH);
                  digitalWrite(3, HIGH);
                  digitalWrite(5, HIGH);
                  digitalWrite(6, HIGH);
                  delay(5000);

                }
                if (l == 5)
                {
                  digitalWrite(4, HIGH);
                  digitalWrite(2, HIGH);
                  digitalWrite(3, HIGH);
                  digitalWrite(5, HIGH);
                  digitalWrite(6, HIGH);
                  Serial.println("test");

                }

  }
  else {
// bouton poussoir 0 , on pourrait ne rien afficher. Ici, on décide de faire clignoter les leds rapidement :
    for (int j=0;j<50;j++)
    {

                  digitalWrite(4, HIGH);
                  digitalWrite(2, HIGH);
                  digitalWrite(3, HIGH);
                  digitalWrite(5, HIGH);
                  digitalWrite(6, HIGH);
        delay(50);
        digitalWrite(4, LOW);
                  digitalWrite(2, LOW);
                  digitalWrite(3, LOW);
                  digitalWrite(5, LOW);
                  digitalWrite(6, LOW);
                  delay(50);
    }
    }
}

PRÉREQUIS :

Connaissance des risques électriques. Montage réalisable par tous. Notion d'électronique et bases en programmation.

VIDEO REALISATION

Tracker Solair

Techno Fabrik
Tracker Solair
Rechercher une vidéo...
Tracker Solair

Tracker Solair

00:17
Lire la vidéo
VIDÉO - Commande de deux leds ( clignotement, allumer, éteindre)

VIDÉO - Commande de deux leds ( clignotement, allumer, éteindre)

00:14
Lire la vidéo
bottom of page