Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/LocalSettings.php on line 193

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/LocalSettings.php on line 197

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/includes/parser/Parser.php on line 2338

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/includes/parser/Parser.php on line 2338

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/includes/parser/Parser.php on line 2338

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/includes/parser/Parser.php on line 2338

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/includes/parser/Parser.php on line 2338

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/includes/parser/Parser.php on line 2338
[ Wikidébrouillard ] Compte à rebours

Compte à rebours

De Wikidebrouillard.

(Liens avec d'autres projets arduino)
(Liens avec d'autres projets arduino)
 
(13 versions intermédiaires masquées)
Ligne 1 : Ligne 1 :
{{avertissement}}
{{avertissement}}
-
{{vidéo|numérovidéo = <videoflash type="mediaspip" num ="1">http://mediaspip.ptitdeb.infini.fr/IMG/mp4/montage_petits_debs.mp4|400|300</videoflash>}}
+
{{vidéo|numérovidéo = <videoflash type="mediaspip" num ="1">http://mediaspip.ptitdeb.infini.fr/IMG/flv/arduino_comptearebours-encoded.flv|400|300</videoflash>}}
==Présentation du projet Arduino==
==Présentation du projet Arduino==
-
c'est dans cette partie que vous décrivez votre projet
+
Le but du projet est de construire un compte à rebours, libre d'en trouver un usage, il en existe beaucoup ;)
-
Le compte à rebours est composé de deux afficheurs 7 segments, ce qui veut dire qu'il peut mesurer une durée maximale de 99 secondes.
+
Le compte à rebours est composé d'un afficheur 7 segments, ce qui veut dire qu'il peut mesurer une durée maximale de 9 secondes.
==Liste du matériel==
==Liste du matériel==
Ligne 12 : Ligne 12 :
* [[Image:Arduino_Uno_logo.png|50px]] Le logiciel Arduino
* [[Image:Arduino_Uno_logo.png|50px]] Le logiciel Arduino
* [[Image:Plaque2.jpg|50px]] Une plaque labdec ou [[Breadboard]]
* [[Image:Plaque2.jpg|50px]] Une plaque labdec ou [[Breadboard]]
-
* [[Image:Afficheur_7_segments.jpg|50px]] Deux [[afficheur 7 segments]]
+
* [[Image:Afficheur_7_segments.jpg|50px]] Un [[afficheur 7 segments]]
* [[Image:Fils1.jpg|50px]] Du [[fil électrique]] (noir, rouge…)
* [[Image:Fils1.jpg|50px]] Du [[fil électrique]] (noir, rouge…)
-
* [[Image:Résistance.jpg|50px]] Quatre [[résistance]]s de 22 kOhm
+
* [[Image:Résistance.jpg|50px]] Dix [[résistance]]s de 330 Ohm
-
* [[Image:Bp.jpg|50px]] Quatre [[bouton poussoir]]
+
* [[Image:Bp.jpg|50px]] Trois [[bouton poussoir]]
-
* [[Image:DEL.png|50px]] Deux [[LED]]
+
* [[Image:DEL.png|50px]] Une [[LED]]
==réalisation du projet==
==réalisation du projet==
===Explication===
===Explication===
 +
 +
On utilise trois boutons poussoirs pour gérer trois évènements différents.
 +
De haut en bas :
 +
Le premier bouton permet de modifier le digit en l'incrémentant de 1 à chaque pression. Il revient à zéro après le chiffre 9.
 +
 +
Le deuxième bouton permet de lancer le décompte, une led rouge clignote et il y a un signal sonore pendant le décompte.
 +
 +
Le troisième bouton permet de faire un reset, c'est à dire de remettre à zéro le compte à rebours.
 +
 +
 +
Nous avons rencontré quelques difficultés pour faire marcher et comprendre le fonctionnement des boutons poussoirs, il faut bien faire attention à ne pas oublier les résistances. Il ne faut aussi pas oublier les résistances pour l'afficheur 7 segments, car elles régulent le courant et évite une surchauffe et l'endommagement de l'afficheur.
 +
===Schéma Fritzing===
===Schéma Fritzing===
 +
 +
[[Fichier:Compte a rebours.jpg]]
 +
===Code===
===Code===
<pre>
<pre>
-
Code à venir mes bichons ;)
+
/* On assigne chaque LED à une broche de l'arduino */
 +
#include <Wire.h>
 +
 
 +
 
 +
const int A = 2;
 +
const int B = 3;
 +
const int C = 4;
 +
const int D = 5;
 +
const int E = 6;
 +
const int F = 7;
 +
const int G = 8;
 +
const int buzz = 9;
 +
const int bouton1 = 12; // pour changer le digit
 +
const int bouton2 = 11; // pour lancer //
 +
const int bouton3 =10; // pour le reset
 +
const int led3 = 13;
 +
 
 +
 
 +
/* ici on créé des variables qui vont nous servir pour les évènements */
 +
int launch;
 +
int truc;
 +
int change_digit1;
 +
int digit;
 +
int resetter;
 +
int chiffre_actuel;
 +
 
 +
 
 +
 
 +
void setup()
 +
{
 +
 +
  //définition des broches en sortie pour chacuns des segments
 +
  pinMode(A, OUTPUT);
 +
  pinMode(B, OUTPUT);
 +
  pinMode(C, OUTPUT);
 +
  pinMode(D, OUTPUT);
 +
  pinMode(E, OUTPUT);
 +
  pinMode(F, OUTPUT);
 +
  pinMode(G, OUTPUT);
 +
  pinMode(buzz, OUTPUT);
 +
  pinMode(bouton1, INPUT);
 +
  pinMode(bouton2, INPUT);
 +
  pinMode(bouton3, INPUT);
 +
 +
 +
  // led de test
 +
  pinMode(led3,OUTPUT);
 +
 
 +
  // on définit ces variables à HIGH au départ
 +
  launch = HIGH;
 +
  change_digit1 = HIGH;
 +
 
 +
  // digit de départ
 +
  digit = 0;
 +
  resetter = HIGH;
 +
  digitalWrite(led3,LOW);
 +
 
 +
 
 +
 
 +
}
 +
 
 +
void loop(void)
 +
{
 +
 
 +
 
 +
  // si le bouton de lancement est relaché
 +
  while(launch==HIGH && resetter==HIGH){
 +
 
 +
  // on fait en sorte que le buzzer est éteins
 +
  noTone(buzz);
 +
 
 +
  change_digit1 = digitalRead(bouton1);
 +
  launch = digitalRead(bouton2);
 +
  if(launch==LOW){
 +
   
 +
    truc = LOW;
 +
   
 +
  }
 +
  resetter = digitalRead(bouton3);
 +
  //je verifie au cours de la boucle si jappuie sur le bouton de lancement
 +
  if(change_digit1 == LOW)      // si je presse le bouton de changement de digit
 +
  {
 +
    digitalWrite(led3,HIGH); // jallume la led de test
 +
    digit++;                // jincremente le digit
 +
 
 +
  }
 +
  else if(change_digit1 == HIGH) // si le bouton de changement de digit est relaché
 +
  {
 +
    digitalWrite(led3,LOW); // on éteins la led
 +
  }
 +
 
 +
 
 +
    if(digit > 9) // si le digit est superieur à 9 après incrémentation
 +
    {
 +
      digit=0; // on le remet à zéro
 +
    } 
 +
   
 +
  // affichage des digits en fonction de la valeur actuelle de digit
 +
 
 +
  if(digit==0)
 +
  {
 +
      digitalWrite(A, LOW);
 +
      digitalWrite(B, LOW);
 +
      digitalWrite(C, LOW);
 +
      digitalWrite(D, LOW);
 +
      digitalWrite(E, LOW);
 +
      digitalWrite(F, LOW);
 +
      digitalWrite(G, HIGH);
 +
  } 
 +
 
 +
  if(digit==1)
 +
  {
 +
      digitalWrite(A, HIGH);
 +
      digitalWrite(B, LOW);
 +
      digitalWrite(C, LOW);
 +
      digitalWrite(D, HIGH);
 +
      digitalWrite(E, HIGH);
 +
      digitalWrite(F, HIGH);
 +
      digitalWrite(G, HIGH);
 +
  } 
 +
 
 +
  if(digit==2)
 +
  {
 +
      digitalWrite(A, LOW);
 +
      digitalWrite(B, LOW);
 +
      digitalWrite(C, HIGH);
 +
      digitalWrite(D, LOW);
 +
      digitalWrite(E, LOW);
 +
      digitalWrite(F, HIGH);
 +
      digitalWrite(G, LOW);
 +
  }
 +
 
 +
  if(digit==3)
 +
  {
 +
      digitalWrite(A, LOW);
 +
      digitalWrite(B, LOW);
 +
      digitalWrite(C, LOW);
 +
      digitalWrite(D, LOW);
 +
      digitalWrite(E, HIGH);
 +
      digitalWrite(F, HIGH);
 +
      digitalWrite(G, LOW);
 +
  } 
 +
 
 +
  if(digit==4)
 +
  {
 +
      digitalWrite(A, HIGH);
 +
      digitalWrite(B, LOW);
 +
      digitalWrite(C, LOW);
 +
      digitalWrite(D, HIGH);
 +
      digitalWrite(E, HIGH);
 +
      digitalWrite(F, LOW);
 +
      digitalWrite(G, LOW);
 +
  } 
 +
 
 +
  if(digit==5)
 +
  {
 +
      digitalWrite(A, LOW);
 +
      digitalWrite(B, HIGH);
 +
      digitalWrite(C, LOW);
 +
      digitalWrite(D, LOW);
 +
      digitalWrite(E, HIGH);
 +
      digitalWrite(F, LOW);
 +
      digitalWrite(G, LOW);
 +
  } 
 +
 
 +
  if(digit==6)
 +
  {
 +
      digitalWrite(A, HIGH);
 +
      digitalWrite(B, HIGH);
 +
      digitalWrite(C, LOW);
 +
      digitalWrite(D, LOW);
 +
      digitalWrite(E, LOW);
 +
      digitalWrite(F, LOW);
 +
      digitalWrite(G, LOW);
 +
  } 
 +
 
 +
  if(digit==7)
 +
  {
 +
      digitalWrite(A, LOW);
 +
      digitalWrite(B, LOW);
 +
      digitalWrite(C, LOW);
 +
      digitalWrite(D, HIGH);
 +
      digitalWrite(E, HIGH);
 +
      digitalWrite(F, HIGH);
 +
      digitalWrite(G, HIGH);
 +
  } 
 +
 
 +
  if(digit==8)
 +
  {
 +
      digitalWrite(A, LOW);
 +
      digitalWrite(B, LOW);
 +
      digitalWrite(C, LOW);
 +
      digitalWrite(D, LOW);
 +
      digitalWrite(E, LOW);
 +
      digitalWrite(F, LOW);
 +
      digitalWrite(G, LOW);
 +
  } 
 +
 
 +
  if(digit==9)
 +
  {
 +
      digitalWrite(A, LOW);
 +
      digitalWrite(B, LOW);
 +
      digitalWrite(C, LOW);
 +
      digitalWrite(D, LOW);
 +
      digitalWrite(E, HIGH);
 +
      digitalWrite(F, LOW);
 +
      digitalWrite(G, LOW);
 +
  } 
 +
 
 +
  delay(100); // on ajoute ce délai pour palier aux "sauts" du bouton poussoir qui ferait que la valeur pourrait être dure à régler à cause de la sensibilité
 +
  } 
 +
 
 +
 
 +
 
 +
 
 +
  // phase 2 : lancement du compte à rebours, décompte et buzz par alternance
 +
 
 +
 
 +
 
 +
  while(truc==LOW && resetter==HIGH && digit!=0){ // bouton de lancement pressé et digit différent de zéro
 +
   
 +
  // launch = digitalRead(bouton1); // on vérifie que le bouton de lancement est toujours pressé
 +
    change_digit1 = digitalRead(bouton1);
 +
  launch = digitalRead(bouton2);
 +
  resetter = digitalRead(bouton3);
 +
 
 +
    chiffre_actuel  = digit;
 +
   
 +
   
 +
    // comme c'est une boucle while, on va repasser dedans tant que digit est différent de zéro
 +
    // donc on affiche sur le cadran la valeur du digit
 +
    if(chiffre_actuel==0 )
 +
  {
 +
      digitalWrite(A, LOW);
 +
      digitalWrite(B, LOW);
 +
      digitalWrite(C, LOW);
 +
      digitalWrite(D, LOW);
 +
      digitalWrite(E, LOW);
 +
      digitalWrite(F, LOW);
 +
      digitalWrite(G, HIGH);
 +
  } 
 +
 
 +
  if(chiffre_actuel==1)
 +
  {
 +
      digitalWrite(A, HIGH);
 +
      digitalWrite(B, LOW);
 +
      digitalWrite(C, LOW);
 +
      digitalWrite(D, HIGH);
 +
      digitalWrite(E, HIGH);
 +
      digitalWrite(F, HIGH);
 +
      digitalWrite(G, HIGH);
 +
  } 
 +
 
 +
  if(chiffre_actuel==2)
 +
  {
 +
      digitalWrite(A, LOW);
 +
      digitalWrite(B, LOW);
 +
      digitalWrite(C, HIGH);
 +
      digitalWrite(D, LOW);
 +
      digitalWrite(E, LOW);
 +
      digitalWrite(F, HIGH);
 +
      digitalWrite(G, LOW);
 +
  }
 +
 
 +
  if(chiffre_actuel==3)
 +
  {
 +
      digitalWrite(A, LOW);
 +
      digitalWrite(B, LOW);
 +
      digitalWrite(C, LOW);
 +
      digitalWrite(D, LOW);
 +
      digitalWrite(E, HIGH);
 +
      digitalWrite(F, HIGH);
 +
      digitalWrite(G, LOW);
 +
  } 
 +
 
 +
  if(chiffre_actuel==4)
 +
  {
 +
      digitalWrite(A, HIGH);
 +
      digitalWrite(B, LOW);
 +
      digitalWrite(C, LOW);
 +
      digitalWrite(D, HIGH);
 +
      digitalWrite(E, HIGH);
 +
      digitalWrite(F, LOW);
 +
      digitalWrite(G, LOW);
 +
  } 
 +
 
 +
  if(chiffre_actuel==5)
 +
  {
 +
      digitalWrite(A, LOW);
 +
      digitalWrite(B, HIGH);
 +
      digitalWrite(C, LOW);
 +
      digitalWrite(D, LOW);
 +
      digitalWrite(E, HIGH);
 +
      digitalWrite(F, LOW);
 +
      digitalWrite(G, LOW);
 +
  } 
 +
 
 +
  if(chiffre_actuel==6)
 +
  {
 +
      digitalWrite(A, HIGH);
 +
      digitalWrite(B, HIGH);
 +
      digitalWrite(C, LOW);
 +
      digitalWrite(D, LOW);
 +
      digitalWrite(E, LOW);
 +
      digitalWrite(F, LOW);
 +
      digitalWrite(G, LOW);
 +
  } 
 +
 
 +
  if(chiffre_actuel==7)
 +
  {
 +
      digitalWrite(A, LOW);
 +
      digitalWrite(B, LOW);
 +
      digitalWrite(C, LOW);
 +
      digitalWrite(D, HIGH);
 +
      digitalWrite(E, HIGH);
 +
      digitalWrite(F, HIGH);
 +
      digitalWrite(G, HIGH);
 +
  } 
 +
 
 +
  if(chiffre_actuel==8)
 +
  {
 +
      digitalWrite(A, LOW);
 +
      digitalWrite(B, LOW);
 +
      digitalWrite(C, LOW);
 +
      digitalWrite(D, LOW);
 +
      digitalWrite(E, LOW);
 +
      digitalWrite(F, LOW);
 +
      digitalWrite(G, LOW);
 +
  } 
 +
 
 +
  if(chiffre_actuel==9)
 +
  {
 +
      digitalWrite(A, LOW);
 +
      digitalWrite(B, LOW);
 +
      digitalWrite(C, LOW);
 +
      digitalWrite(D, LOW);
 +
      digitalWrite(E, HIGH);
 +
      digitalWrite(F, LOW);
 +
      digitalWrite(G, LOW);
 +
  } 
 +
 
 +
 
 +
  // on décrémente le digit que l'on affiche
 +
  chiffre_actuel--;
 +
  digit--;
 +
 
 +
  // on fait marcher le buzzer
 +
 
 +
  tone(buzz, 4000);
 +
    digitalWrite(led3,HIGH);
 +
    delay(500);
 +
    digitalWrite(led3,LOW);
 +
    noTone(buzz);
 +
   
 +
  // on joue sur le décallage de la seconde pour faire marcher le buzzer par alternance
 +
  delay(500);
 +
   
 +
  }
 +
 
 +
  // une fois que le compte est fini
 +
 
 +
  while(truc==LOW && resetter==HIGH && digit==0){
 +
   
 +
   
 +
    change_digit1 = digitalRead(bouton1);
 +
        launch = digitalRead(bouton2);
 +
  resetter = digitalRead(bouton3);
 +
 
 +
      // on affiche zéro
 +
      digitalWrite(A, LOW);
 +
      digitalWrite(B, LOW);
 +
      digitalWrite(C, LOW);
 +
      digitalWrite(D, LOW);
 +
      digitalWrite(E, LOW);
 +
      digitalWrite(F, LOW);
 +
      digitalWrite(G, HIGH);
 +
     
 +
     
 +
      /* on fait sonner le buzzer en continue*/
 +
      tone(buzz, 4000);
 +
        digitalWrite(led3,HIGH);
 +
      truc == HIGH;
 +
   
 +
  }
 +
 
 +
 
 +
 
 +
    while(resetter==LOW){
 +
   
 +
      // on arrete le buzzer
 +
      noTone(buzz);
 +
      // on eteint la led
 +
      digitalWrite(led3,LOW);
 +
      // on redefinit le digit de base à zéro
 +
      digit=0;
 +
     
 +
      chiffre_actuel =0;
 +
     
 +
      // on rechecke letat des boutons
 +
      change_digit1 = digitalRead(bouton1);
 +
        launch = digitalRead(bouton2);
 +
        resetter = digitalRead(bouton3);
 +
       
 +
       
 +
      // on affiche zéro
 +
      digitalWrite(A, LOW);
 +
      digitalWrite(B, LOW);
 +
      digitalWrite(C, LOW);
 +
      digitalWrite(D, LOW);
 +
      digitalWrite(E, LOW);
 +
      digitalWrite(F, LOW);
 +
      digitalWrite(G, HIGH);
 +
      truc = HIGH;
 +
  }
 +
   
 +
   
 +
  }
 +
 
 +
 
 +
 
 +
 
 +
 
</pre>
</pre>
Ligne 32 : Ligne 468 :
http://wikidebrouillard.org/index.php/Horloge_Arduino
http://wikidebrouillard.org/index.php/Horloge_Arduino
-
 
-
http://wikidebrouillard.org/index.php/Minuteur_7-segments
 
==Pour aller plus loin==
==Pour aller plus loin==
 +
On pourrait ajouter un deuxième afficheur 7 segments voire un troisième pour aller plus loin.
 +
Pour cela il faudrait penser à utiliser un démultiplexeur pour pouvoir gérer plus de cas à cause du nombre limité d'entrées/sorties.
==Liens avec le quotidien==
==Liens avec le quotidien==

Version actuelle en date du 31 janvier 2014 à 11:06

Article incomplet en cours de rédaction
Modèle:Vidéo

Sommaire

Présentation du projet Arduino

Le but du projet est de construire un compte à rebours, libre d'en trouver un usage, il en existe beaucoup ;)

Le compte à rebours est composé d'un afficheur 7 segments, ce qui veut dire qu'il peut mesurer une durée maximale de 9 secondes.

Liste du matériel

réalisation du projet

Explication

On utilise trois boutons poussoirs pour gérer trois évènements différents. De haut en bas : Le premier bouton permet de modifier le digit en l'incrémentant de 1 à chaque pression. Il revient à zéro après le chiffre 9.

Le deuxième bouton permet de lancer le décompte, une led rouge clignote et il y a un signal sonore pendant le décompte.

Le troisième bouton permet de faire un reset, c'est à dire de remettre à zéro le compte à rebours.


Nous avons rencontré quelques difficultés pour faire marcher et comprendre le fonctionnement des boutons poussoirs, il faut bien faire attention à ne pas oublier les résistances. Il ne faut aussi pas oublier les résistances pour l'afficheur 7 segments, car elles régulent le courant et évite une surchauffe et l'endommagement de l'afficheur.

Schéma Fritzing

Fichier:Compte a rebours.jpg

Code

/* On assigne chaque LED à une broche de l'arduino */
#include <Wire.h>


const int A = 2;
const int B = 3;
const int C = 4;
const int D = 5;
const int E = 6;
const int F = 7;
const int G = 8;
const int buzz = 9;
const int bouton1 = 12; // pour changer le digit
const int bouton2 = 11; // pour lancer //
const int bouton3 =10; // pour le reset
const int led3 = 13;


/* ici on créé des variables qui vont nous servir pour les évènements */
int launch;
int truc;
int change_digit1;
int digit;
int resetter;
int chiffre_actuel;



void setup()
{
 
   //définition des broches en sortie pour chacuns des segments
   pinMode(A, OUTPUT);
   pinMode(B, OUTPUT);
   pinMode(C, OUTPUT);
   pinMode(D, OUTPUT);
   pinMode(E, OUTPUT);
   pinMode(F, OUTPUT);
   pinMode(G, OUTPUT);
   pinMode(buzz, OUTPUT);
   pinMode(bouton1, INPUT);
   pinMode(bouton2, INPUT);
   pinMode(bouton3, INPUT);
 
 
   // led de test 
   pinMode(led3,OUTPUT);
   
   // on définit ces variables à HIGH au départ
   launch = HIGH;
   change_digit1 = HIGH;
   
   // digit de départ
   digit = 0;
   resetter = HIGH;
   digitalWrite(led3,LOW);

   
   
}

void loop(void)
{
  
   
  // si le bouton de lancement est relaché
  while(launch==HIGH && resetter==HIGH){
   
  // on fait en sorte que le buzzer est éteins
  noTone(buzz);
  
  change_digit1 = digitalRead(bouton1);
  launch = digitalRead(bouton2);
  if(launch==LOW){
    
    truc = LOW;
    
  }
  resetter = digitalRead(bouton3);
  //je verifie au cours de la boucle si jappuie sur le bouton de lancement 
   if(change_digit1 == LOW)      // si je presse le bouton de changement de digit
   {
     digitalWrite(led3,HIGH); // jallume la led de test
     digit++;                // jincremente le digit

   }
   else if(change_digit1 == HIGH) // si le bouton de changement de digit est relaché
   {
     digitalWrite(led3,LOW); // on éteins la led
   }

   
    if(digit > 9) // si le digit est superieur à 9 après incrémentation
     { 
      digit=0; // on le remet à zéro
     }  
     
   // affichage des digits en fonction de la valeur actuelle de digit

   if(digit==0)
   {
       digitalWrite(A, LOW);
       digitalWrite(B, LOW);
       digitalWrite(C, LOW);
       digitalWrite(D, LOW);
       digitalWrite(E, LOW);
       digitalWrite(F, LOW);
       digitalWrite(G, HIGH);
   }  
   
   if(digit==1)
   {
       digitalWrite(A, HIGH);
       digitalWrite(B, LOW);
       digitalWrite(C, LOW);
       digitalWrite(D, HIGH);
       digitalWrite(E, HIGH);
       digitalWrite(F, HIGH);
       digitalWrite(G, HIGH);
   }  
   
   if(digit==2)
   {
       digitalWrite(A, LOW);
       digitalWrite(B, LOW);
       digitalWrite(C, HIGH);
       digitalWrite(D, LOW);
       digitalWrite(E, LOW);
       digitalWrite(F, HIGH);
       digitalWrite(G, LOW);
   } 
   
   if(digit==3)
   {
       digitalWrite(A, LOW);
       digitalWrite(B, LOW);
       digitalWrite(C, LOW);
       digitalWrite(D, LOW);
       digitalWrite(E, HIGH);
       digitalWrite(F, HIGH);
       digitalWrite(G, LOW);
   }  
   
   if(digit==4)
   {
       digitalWrite(A, HIGH);
       digitalWrite(B, LOW);
       digitalWrite(C, LOW);
       digitalWrite(D, HIGH);
       digitalWrite(E, HIGH);
       digitalWrite(F, LOW);
       digitalWrite(G, LOW);
   }  
   
   if(digit==5)
   {
       digitalWrite(A, LOW);
       digitalWrite(B, HIGH);
       digitalWrite(C, LOW);
       digitalWrite(D, LOW);
       digitalWrite(E, HIGH);
       digitalWrite(F, LOW);
       digitalWrite(G, LOW);
   }  
   
   if(digit==6)
   {
       digitalWrite(A, HIGH);
       digitalWrite(B, HIGH);
       digitalWrite(C, LOW);
       digitalWrite(D, LOW);
       digitalWrite(E, LOW);
       digitalWrite(F, LOW);
       digitalWrite(G, LOW);
   }  
   
   if(digit==7)
   {
       digitalWrite(A, LOW);
       digitalWrite(B, LOW);
       digitalWrite(C, LOW);
       digitalWrite(D, HIGH);
       digitalWrite(E, HIGH);
       digitalWrite(F, HIGH);
       digitalWrite(G, HIGH);
   }  
   
   if(digit==8)
   {
       digitalWrite(A, LOW);
       digitalWrite(B, LOW);
       digitalWrite(C, LOW);
       digitalWrite(D, LOW);
       digitalWrite(E, LOW);
       digitalWrite(F, LOW);
       digitalWrite(G, LOW);
   }  
   
   if(digit==9)
   {
       digitalWrite(A, LOW);
       digitalWrite(B, LOW);
       digitalWrite(C, LOW);
       digitalWrite(D, LOW);
       digitalWrite(E, HIGH);
       digitalWrite(F, LOW);
       digitalWrite(G, LOW);
   }  
  
  delay(100); // on ajoute ce délai pour palier aux "sauts" du bouton poussoir qui ferait que la valeur pourrait être dure à régler à cause de la sensibilité
  }  
  
  
  
  
  // phase 2 : lancement du compte à rebours, décompte et buzz par alternance
  
  
  
  while(truc==LOW && resetter==HIGH && digit!=0){ // bouton de lancement pressé et digit différent de zéro
    
   // launch = digitalRead(bouton1); // on vérifie que le bouton de lancement est toujours pressé
     change_digit1 = digitalRead(bouton1);
  launch = digitalRead(bouton2);
  resetter = digitalRead(bouton3);
  
    chiffre_actuel  = digit; 
    
    
    // comme c'est une boucle while, on va repasser dedans tant que digit est différent de zéro
    // donc on affiche sur le cadran la valeur du digit 
     if(chiffre_actuel==0 )
   {
       digitalWrite(A, LOW);
       digitalWrite(B, LOW);
       digitalWrite(C, LOW);
       digitalWrite(D, LOW);
       digitalWrite(E, LOW);
       digitalWrite(F, LOW);
       digitalWrite(G, HIGH);
   }  
   
   if(chiffre_actuel==1)
   {
       digitalWrite(A, HIGH);
       digitalWrite(B, LOW);
       digitalWrite(C, LOW);
       digitalWrite(D, HIGH);
       digitalWrite(E, HIGH);
       digitalWrite(F, HIGH);
       digitalWrite(G, HIGH);
   }  
   
   if(chiffre_actuel==2)
   {
       digitalWrite(A, LOW);
       digitalWrite(B, LOW);
       digitalWrite(C, HIGH);
       digitalWrite(D, LOW);
       digitalWrite(E, LOW);
       digitalWrite(F, HIGH);
       digitalWrite(G, LOW);
   } 
   
   if(chiffre_actuel==3)
   {
       digitalWrite(A, LOW);
       digitalWrite(B, LOW);
       digitalWrite(C, LOW);
       digitalWrite(D, LOW);
       digitalWrite(E, HIGH);
       digitalWrite(F, HIGH);
       digitalWrite(G, LOW);
   }  
   
   if(chiffre_actuel==4)
   {
       digitalWrite(A, HIGH);
       digitalWrite(B, LOW);
       digitalWrite(C, LOW);
       digitalWrite(D, HIGH);
       digitalWrite(E, HIGH);
       digitalWrite(F, LOW);
       digitalWrite(G, LOW);
   }  
   
   if(chiffre_actuel==5)
   {
       digitalWrite(A, LOW);
       digitalWrite(B, HIGH);
       digitalWrite(C, LOW);
       digitalWrite(D, LOW);
       digitalWrite(E, HIGH);
       digitalWrite(F, LOW);
       digitalWrite(G, LOW);
   }  
   
   if(chiffre_actuel==6)
   {
       digitalWrite(A, HIGH);
       digitalWrite(B, HIGH);
       digitalWrite(C, LOW);
       digitalWrite(D, LOW);
       digitalWrite(E, LOW);
       digitalWrite(F, LOW);
       digitalWrite(G, LOW);
   }  
   
   if(chiffre_actuel==7)
   {
       digitalWrite(A, LOW);
       digitalWrite(B, LOW);
       digitalWrite(C, LOW);
       digitalWrite(D, HIGH);
       digitalWrite(E, HIGH);
       digitalWrite(F, HIGH);
       digitalWrite(G, HIGH);
   }  
   
   if(chiffre_actuel==8)
   {
       digitalWrite(A, LOW);
       digitalWrite(B, LOW);
       digitalWrite(C, LOW);
       digitalWrite(D, LOW);
       digitalWrite(E, LOW);
       digitalWrite(F, LOW);
       digitalWrite(G, LOW);
   }  
   
   if(chiffre_actuel==9)
   {
       digitalWrite(A, LOW);
       digitalWrite(B, LOW);
       digitalWrite(C, LOW);
       digitalWrite(D, LOW);
       digitalWrite(E, HIGH);
       digitalWrite(F, LOW);
       digitalWrite(G, LOW);
   }  
   
   
   // on décrémente le digit que l'on affiche
   chiffre_actuel--;
   digit--;
   
   // on fait marcher le buzzer
   
   tone(buzz, 4000); 
    digitalWrite(led3,HIGH); 
    delay(500);
     digitalWrite(led3,LOW); 
    noTone(buzz); 
    
   // on joue sur le décallage de la seconde pour faire marcher le buzzer par alternance
   delay(500); 
    
  }
  
  // une fois que le compte est fini 
  
  while(truc==LOW && resetter==HIGH && digit==0){
    
    
     change_digit1 = digitalRead(bouton1);
        launch = digitalRead(bouton2);
  resetter = digitalRead(bouton3);
  
      // on affiche zéro
       digitalWrite(A, LOW);
       digitalWrite(B, LOW);
       digitalWrite(C, LOW);
       digitalWrite(D, LOW);
       digitalWrite(E, LOW);
       digitalWrite(F, LOW);
       digitalWrite(G, HIGH);
       
       
       /* on fait sonner le buzzer en continue*/
       tone(buzz, 4000);
        digitalWrite(led3,HIGH); 
       truc == HIGH;
    
  }
   
   
   
     while(resetter==LOW){
    
       // on arrete le buzzer 
       noTone(buzz);
       // on eteint la led
       digitalWrite(led3,LOW);
      // on redefinit le digit de base à zéro 
      digit=0;
      
      chiffre_actuel =0;
      
      // on rechecke letat des boutons
       change_digit1 = digitalRead(bouton1);
        launch = digitalRead(bouton2);
        resetter = digitalRead(bouton3);
        
        
      // on affiche zéro
       digitalWrite(A, LOW);
       digitalWrite(B, LOW);
       digitalWrite(C, LOW);
       digitalWrite(D, LOW);
       digitalWrite(E, LOW);
       digitalWrite(F, LOW);
       digitalWrite(G, HIGH);
       truc = HIGH;
  }
    
    
  }
  
  
  
  
  

Liens avec d'autres projets arduino

Projets utilisant le même système d'affichage :

http://wikidebrouillard.org/index.php/Afficheur_7_segments_pilot%C3%A9_par_Arduino

http://wikidebrouillard.org/index.php/Horloge_Arduino

Pour aller plus loin

On pourrait ajouter un deuxième afficheur 7 segments voire un troisième pour aller plus loin. Pour cela il faudrait penser à utiliser un démultiplexeur pour pouvoir gérer plus de cas à cause du nombre limité d'entrées/sorties.

Liens avec le quotidien

Ce compte à rebours peut être utilisé dans le domaine culinaire par exemple, pour la cuisson de certains plats.

AR
CO

Compte à rebours

Rechercher

Page Discussion Historique
Powered by MediaWiki
Creative Commons - Paternite Partage a l

© Graphisme : Les Petits Débrouillards Grand Ouest (Patrice Guinche - Jessica Romero) | Développement web : Libre Informatique