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.