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
[ Wikidébrouillard ] Minuteur 7-segments

Minuteur 7-segments

De Wikidebrouillard.

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


Sommaire

Présentation de l'expérience

Marre de rater vos pâtes ? Fondante au lieu d'être "Al Dente" ? Atteignez la perfection grâce à ce magnifique minuteur Arduino UNO à afficheur 7-segments ! Il s'adapte à toute les échelles temporelles. Envie de faire une sieste ? Changez la base de temps, réglez-le et dormez. Il vous réveillera de sa douce mélodie...stridente.

Matériel

- Un ordinateur avec le logiciel Arduino

- Un câble USB_A USB_B

- Un Arduino UNO

- 7 résistances

- 2 boutons poussoirs

- 1 Buzzer

- 1 Afficheur 7-Segments

- Une plaque pour câbler

- Des câbles

L'expérience

La réalisation

Le code

/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.
 
  This example code is in the public domain.
 */
 
// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int seg1 = 13;
int seg2 = 12;
int seg3 = 11;
int seg4 = 10;
int seg5 = 9;
int seg6 = 8;
int seg7 = 7;
int Buzzer = 6;
int moins = 5;
int choix = 4;
int launch= 3;


// the setup routine runs once when you press reset:
void setup() {                
  // initialize the digital pin as an output.
  pinMode(seg1, OUTPUT); 
  pinMode(seg2, OUTPUT); 
  pinMode(seg3, OUTPUT); 
  pinMode(seg4, OUTPUT); 
  pinMode(seg5, OUTPUT); 
  pinMode(seg6, OUTPUT); 
  pinMode(seg7, OUTPUT);
  pinMode(Buzzer, OUTPUT);  
  pinMode(moins, OUTPUT);
  pinMode(choix, INPUT); 
  pinMode(launch, INPUT);
   
}

// the loop routine runs over and over again forever:
void loop(){
  int incr = 0;
  int temps = 0;
  int decr = 0;
  int aff = 0;
  int lancer = 0;
  int seconde = 1000;
  int minute = 60000;
  int heure = 3600000;
  
  while(lancer == 0){
    noTone(Buzzer);
    incr = digitalRead(choix);
    if (incr == HIGH) temps++; 
    if (temps > 9) temps = 0;
    if (temps == 0){
      digitalWrite(seg1, HIGH);
      digitalWrite(seg2, HIGH);
      digitalWrite(seg3, HIGH);
      digitalWrite(seg4, HIGH);
      digitalWrite(seg5, HIGH);
      digitalWrite(seg6, HIGH);
      digitalWrite(seg7, LOW);
    }
    if (temps == 1){
      digitalWrite(seg1, LOW);
      digitalWrite(seg2, HIGH);
      digitalWrite(seg3, HIGH);
      digitalWrite(seg4, LOW);
      digitalWrite(seg5, LOW);
      digitalWrite(seg6, LOW);
      digitalWrite(seg7, LOW);
    }
    if (temps == 2){
      digitalWrite(seg1, HIGH);
      digitalWrite(seg2, HIGH);
      digitalWrite(seg3, LOW);
      digitalWrite(seg4, HIGH);
      digitalWrite(seg5, HIGH);
      digitalWrite(seg6, LOW);
      digitalWrite(seg7, HIGH);
    }
    if (temps == 3){
      digitalWrite(seg1, HIGH);
      digitalWrite(seg2, HIGH);
      digitalWrite(seg3, HIGH);
      digitalWrite(seg4, HIGH);
      digitalWrite(seg5, LOW);
      digitalWrite(seg6, LOW);
      digitalWrite(seg7, HIGH);
    }
    if (temps == 4){
      digitalWrite(seg1, LOW);
      digitalWrite(seg2, HIGH);
      digitalWrite(seg3, HIGH);
      digitalWrite(seg4, LOW);
      digitalWrite(seg5, LOW);
      digitalWrite(seg6, HIGH);
      digitalWrite(seg7, HIGH);
    }
    if (temps == 5){
      digitalWrite(seg1, HIGH);
      digitalWrite(seg2, LOW);
      digitalWrite(seg3, HIGH);
      digitalWrite(seg4, HIGH);
      digitalWrite(seg5, LOW);
      digitalWrite(seg6, HIGH);
      digitalWrite(seg7, HIGH);
    }
    if (temps == 6){
      digitalWrite(seg1, HIGH);
      digitalWrite(seg2, LOW);
      digitalWrite(seg3, HIGH);
      digitalWrite(seg4, HIGH);
      digitalWrite(seg5, HIGH);
      digitalWrite(seg6, HIGH);
      digitalWrite(seg7, HIGH);
    }
    if (temps == 7){
      digitalWrite(seg1, HIGH);
      digitalWrite(seg2, HIGH);
      digitalWrite(seg3, HIGH);
      digitalWrite(seg4, LOW);
      digitalWrite(seg5, LOW);
      digitalWrite(seg6, LOW);
      digitalWrite(seg7, LOW);
    }
    if (temps == 8){
      digitalWrite(seg1, HIGH);
      digitalWrite(seg2, HIGH);
      digitalWrite(seg3, HIGH);
      digitalWrite(seg4, HIGH);
      digitalWrite(seg5, HIGH);
      digitalWrite(seg6, HIGH);
      digitalWrite(seg7, HIGH);
    }
    if (temps == 9){
      digitalWrite(seg1, HIGH);
      digitalWrite(seg2, HIGH);
      digitalWrite(seg3, HIGH);
      digitalWrite(seg4, HIGH);
      digitalWrite(seg5, LOW);
      digitalWrite(seg6, HIGH);
      digitalWrite(seg7, HIGH);
    }
    lancer = digitalRead(launch);
    if (lancer == HIGH) lancer = 1;
    delay(1000);
  }
  
  if (lancer == 1){
   aff = temps;
   temps = temps * seconde;
  }
   
  while((lancer == 1) && (temps != 0)){
    
    temps = temps - seconde;
    decr += 1;
    if (decr == (seconde/1000)){
      aff -= 1;
      decr =0;
      delay(500);
      tone(Buzzer, 2000);
      delay(500);
      noTone(Buzzer);
    }
    else{ 
      delay(1000);
    }
    
    if (aff == 1){
      digitalWrite(seg1, LOW);
      digitalWrite(seg2, HIGH);
      digitalWrite(seg3, HIGH);
      digitalWrite(seg4, LOW);
      digitalWrite(seg5, LOW);
      digitalWrite(seg6, LOW);
      digitalWrite(seg7, LOW);
    }
    if (aff == 2){
      digitalWrite(seg1, HIGH);
      digitalWrite(seg2, HIGH);
      digitalWrite(seg3, LOW);
      digitalWrite(seg4, HIGH);
      digitalWrite(seg5, HIGH);
      digitalWrite(seg6, LOW);
      digitalWrite(seg7, HIGH);
    }
    if (aff == 3){
      digitalWrite(seg1, HIGH);
      digitalWrite(seg2, HIGH);
      digitalWrite(seg3, HIGH);
      digitalWrite(seg4, HIGH);
      digitalWrite(seg5, LOW);
      digitalWrite(seg6, LOW);
      digitalWrite(seg7, HIGH);
    }
    if (aff == 4){
      digitalWrite(seg1, LOW);
      digitalWrite(seg2, HIGH);
      digitalWrite(seg3, HIGH);
      digitalWrite(seg4, LOW);
      digitalWrite(seg5, LOW);
      digitalWrite(seg6, HIGH);
      digitalWrite(seg7, HIGH);
    }
    if (aff == 5){
      digitalWrite(seg1, HIGH);
      digitalWrite(seg2, LOW);
      digitalWrite(seg3, HIGH);
      digitalWrite(seg4, HIGH);
      digitalWrite(seg5, LOW);
      digitalWrite(seg6, HIGH);
      digitalWrite(seg7, HIGH);
    }
    if (aff == 6){
      digitalWrite(seg1, HIGH);
      digitalWrite(seg2, LOW);
      digitalWrite(seg3, HIGH);
      digitalWrite(seg4, HIGH);
      digitalWrite(seg5, HIGH);
      digitalWrite(seg6, HIGH);
      digitalWrite(seg7, HIGH);
    }
    if (aff == 7){
      digitalWrite(seg1, HIGH);
      digitalWrite(seg2, HIGH);
      digitalWrite(seg3, HIGH);
      digitalWrite(seg4, LOW);
      digitalWrite(seg5, LOW);
      digitalWrite(seg6, LOW);
      digitalWrite(seg7, LOW);
    }
    if (aff == 8){
      digitalWrite(seg1, HIGH);
      digitalWrite(seg2, HIGH);
      digitalWrite(seg3, HIGH);
      digitalWrite(seg4, HIGH);
      digitalWrite(seg5, HIGH);
      digitalWrite(seg6, HIGH);
      digitalWrite(seg7, HIGH);
    }
    if (aff == 9){
      digitalWrite(seg1, HIGH);
      digitalWrite(seg2, HIGH);
      digitalWrite(seg3, HIGH);
      digitalWrite(seg4, HIGH);
      digitalWrite(seg5, LOW);
      digitalWrite(seg6, HIGH);
      digitalWrite(seg7, HIGH);
    }
  }
    
  while((lancer == 1)&&(temps == 0)){
   
    digitalWrite(seg1, HIGH);
    digitalWrite(seg2, HIGH);
    digitalWrite(seg3, HIGH);
    digitalWrite(seg4, HIGH);
    digitalWrite(seg5, HIGH);
    digitalWrite(seg6, HIGH);
    digitalWrite(seg7, LOW);

    noTone(Buzzer);
    tone(Buzzer, 3500);
    incr = digitalRead(choix);
    if (incr == HIGH) lancer = 0;
    
  }
}

La manipulation

1/ Brancher l'Arduino à l'ordinateur à l'aide du câble USB.

2/ 0uvrir le code du Coffre avec le logiciel Arduino.

3/ Téléverser le code dans l'Arduino.

4/ Régler le temps à l'aide du bouton poussoir correspondant.

5/ Lancer le compte à rebours à l'aide du bouton poussoir restant.

6/ Une fois le 0 atteint, appuyez sur le premier bouton poussoir pour repasser au réglage du temps.

Que voit-on ?

Le temps est réglable et à chaque décrémentation d'unité de temps (seconde, minute ou heure) engendre un "Bip" sonore. Lorsque le compteur atteint 0, un "Bip" continu est alors généré jusqu'à l'appui sur le bouton de comptage.

Explications

De manière simple

Lors de l'appui sur le bon bouton poussoir, l'arduino reçoit un signal sur une de ses entrées ce qui augmente le compte à rebours du minuteur. Lors de l'appui sur l'autre bouton poussoir, le signal reçu donne l'ordre à l'arduino de lancer ce compte à rebour. A chaque unité de temps, le buzzer reçoit une fréquence pendant une demi seconde ce qui génère un "bip" sonore. Lors de l'arrivée à 0 du minuteur, une frequence différente est envoyée au buzzer jusqu'à l'appui sur le 1er bouton poussoir. Après cet appui, le minuteur peut de nouveau être réglé puis relancé.

Questions sans réponses

Peut on changer la base de temps sans modifier le code?

Allons plus loin dans l'explication

On a utilisé un buzzer dans cette expérience? mais quelles sont les différentes sortes de buzzer

Liens avec d'autres expériences

Expériences sur Wikidébrouillard

Indiquer ici les expériences de Wikidébrouillard.

Autres expériences

Autres expériences avec le même concept, recherche sur internet (indiquer les liens).

Applications : liens avec le quotidien

Cuisson, départ de course, reveil.


Catégories

Portail des ExplorateursWikidébrouillardLéon DitFLOGPhoto mystèreJ'ai FaitPortraits
AR
CO

Minuteur 7-segments

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