top of page
Rechercher

19. 4 - Dé numérique

  • L C
  • 18 sept. 2024
  • 2 min de lecture

Dernière mise à jour : 6 déc. 2024

Objectif


Simulation d'un lancer de dé


Matériel


  • 1 carte Arduino Uno

  • 1 breadboard

  • 1 bouton poussoir BP

  • 1 résistance 10 KΩ

  • 1 buzzer

  • 1 afficheur 7 segments

  • 8 résistances 330 Ω

  • fils de connexion


Montage



Sketch


// Durée

#define Filtre_parasites 50


// Brochage de l'afficheur

#define Segment_A 4

#define Segment_B 5

#define Segment_C 9

#define Segment_D 11

#define Segment_E 12

#define Segment_F 3

#define Segment_G 2

#define Segment_DP 8


// Etat des leds de l'afficheur

#define ON true

#define OFF false


// Brochage du bouton poussoir

#define Bouton 7


// Brochage du buzzer

#define Buzzer 6


//Déclaration globales

​int Chiffre[8] = { Segment_A, Segment_B, Segment_C, Segment_D, Segment_E, Segment_F, Segment_G, Segment_DP};


void setup()

{

for(int s=0; s<8; s++)

{

pinMode(Chiffre[s],OUTPUT);

}

effacerEcran();

pinMode(Buzzer, OUTPUT);

pinMode(Bouton, INPUT_PULLUP);

}


void loop()

{

if(digitalRead(Bouton) == LOW)

{

// Attente relachement bouton poussoir

delay(Filtre_parasites);

while(digitalRead(Bouton) == LOW);

traiterLancer();

}

}

void afficherChiffre(uint8_t chiffre_p)

{

bool AffichageChiffres[10][8] = {

{ ON, ON, ON, ON, ON, ON, OFF, OFF}, // 0

{ OFF, ON, ON, OFF, OFF, OFF, OFF, OFF}, // 1

{ ON, ON, OFF, ON, ON, OFF, ON, OFF}, // 2

{ ON, ON, ON, ON, OFF, OFF, ON, OFF}, // 3

{ OFF, ON, ON, OFF, OFF, ON, ON, OFF}, // 4

{ ON, OFF, ON, ON, OFF, ON, ON, OFF}, // 5

{ ON,OFF, ON, ON, ON, ON, ON, OFF}, // 6

{ ON, ON, ON, OFF, OFF, OFF, OFF, OFF}, // 7

{ ON, ON, ON, ON, ON, ON, ON, OFF}, // 8

{ ON, ON, ON, OFF, OFF, ON, ON, OFF}}; // 9


for(uint8_t s=0; s< 8; s++)

{

digitalWrite(Segment[s],

AffichageChiffres[chiffre_p][s]);

}

}


void traiterLancer(void)

{

uint8_t chiffre_L;

uint8_t s, x;

randomSeed(millis());


// Affichage d'un chenillard

effacerEcran();

for(x=0; x<3; x++)

{​​

for(s=0; s<6; s++)

{

digitalWrite(Chiffre[s],ON);

delay(60);

digitalWrite(Chiffre[s],OFF);

}

}

// Simule le dé qui roule

for(s=0; s<7; s++)

{

chiffre_L = random(1, 6+1);

afficherChiffre(chiffre_L);

delay(s*20+300);

}


// Le résultat clignotte avec bips

for(s=0; s<2; s++)

{

effacerEcran();

delay(300);

afficherChiffre(chiffre_L);

sonner(300);

}

}


void effacerEcran(void)

{

for(uint8_t ii_l=0; ii_l< 8; ii_l++)

{

digitalWrite(Chiffre[ii_l],OFF);

}

}


​void sonner(int dureeMillisecondes_p)

{

digitalWrite(Buzzer, true);

delay(dureeMillisecondes_p);

digitalWrite(Buzzer, false);

}​


Réalisation



bottom of page