Fichier:Horloge TM1637

/* inclusion de la librairie */

  1. include <Arduino.h>
  2. include <TM1637Display.h>

//*******************************// //*******************************// //** DECLARATION DES VARIABLES **// //*******************************// //*******************************//

// Pour le module du joueur 1

  1. define CLK1 2
  2. define DIO1 3

// Pour le module du joueur 2

  1. define CLK2 4
  2. define DIO2 5

// Module du joueur 1 TM1637Display TM001(CLK1, DIO1); // Module du joueur 2 TM1637Display TM002(CLK2, DIO2);

// LA LED Blanche Pour le joueur 1 const int J1 = 9; // broche 9 du micro-contrôleur // LA LED Blanche Pour le joueur 2 const int J2 = 10; // broche 10 du micro-contrôleur

// LA LED Verte R1 const int R1 = 11; // broche 11 du micro-contrôleur // LA LED Rouge R2 const int R2 = 12; // broche 12 du micro-contrôleur

// Attribution int pinBouton; int pinBouton_deux; int pinBouton_trois;

// 300 seconde correspond à 5 minutes int joueur_un_seconde = 300; int joueur_deux_seconde = 300;

// Affichage du temps de l'horloge sur les afficheurs 7 segments à 4 digits pour le joueur 1 int joueur_un_minute_dizaine; int joueur_un_minute_unite; int joueur_un_seconde_dizaine; int joueur_un_seconde_unite;

int joueur_un_minute_total; int joueur_un_seconde_total;

// Affichage du temps de l'horloge sur les afficheurs 7 segments à 4 digits pour le joueur 2 int joueur_deux_minute_dizaine; int joueur_deux_minute_unite; int joueur_deux_seconde_dizaine; int joueur_deux_seconde_unite;

int joueur_deux_minute_total; int joueur_deux_seconde_total;

// Etat des 3 boutons : bouton 1,2 et 3 boolean etatBouton; boolean etatBouton_deux; boolean etatBouton_trois;

//*******************************// //*******************************// //************ SETUP ************// //*******************************// //*******************************//


void setup() {

 // LED du joueur n°1
 pinMode(J1, OUTPUT); //L1 est une broche de sortie
 // LED du joueur n°2
 pinMode(J2, OUTPUT); //L2 est une broche de sortie
 // LED rouge du mode de réglage 
 pinMode(R1, OUTPUT); //R1 est une broche de sortie
 // LED verte du mode partie
 pinMode(R2, OUTPUT); //R2 est une broche de sortie


 //bouton changement joueur
 pinBouton=6;
 pinMode(pinBouton,INPUT_PULLUP);
 //bouton 5 Minute plus
 pinBouton_deux=7;
 pinMode(pinBouton_deux,INPUT_PULLUP);
 //bouton réglage
 pinBouton_trois=8;
 pinMode(pinBouton_trois,INPUT_PULLUP);
 // Intensité des afficheurs
 TM001.setBrightness(0x0f);
 TM002.setBrightness(0x0f);
 //*******************************//
 //*******************************//
 //INITIALISATION PREMIER COMPTEUR//
 //*******************************//
 //*******************************//
 uint8_t segto_000;
 uint8_t segto_001;
 uint8_t segto_002;
 uint8_t segto_003;
 // 0x80 correspond à la colonne centrale de l'afficheur pour faire la différence entre les minutes et les secondes
 
 // Attribuer 0 dans la première variable
 segto_000 = 0x80 | TM001.encodeDigit(0);
 // Attribuer 5 dans la deuxième variable
 segto_001 = 0x80 | TM001.encodeDigit(5);
 // Afficher 0 dans la troisième variable
 segto_002 = 0x80 | TM001.encodeDigit(0);
 // Afficher 0 dans la quatrième variable
 segto_003 = 0x80 | TM001.encodeDigit(0);


 // afficher les chiffres sur les sept segments à partir des variables
 // Afficher 0 pour le premier digit à partir de la variable
 TM001.setSegments(&segto_000, 1, 0);
 // Afficher 5 pour le deuxième digit à partir de la variable
 TM001.setSegments(&segto_001, 1, 1);
 // Afficher 0 pour le troisième digit à partir de la variable
 TM001.setSegments(&segto_002, 1, 2);
 // Afficher 0 pour le quatrième digit à partir de la variable
 TM001.setSegments(&segto_003, 1, 3);
 //*******************************//
 //*******************************//
 //INITIALISATION DEUXIEME COMPTEUR//
 //*******************************//
 //*******************************//


 uint8_t segto_004;
 uint8_t segto_005;
 uint8_t segto_006;
 uint8_t segto_007;
 segto_004 = 0x80 | TM002.encodeDigit(0);
 segto_005 = 0x80 | TM002.encodeDigit(5);
 segto_006 = 0x80 | TM002.encodeDigit(0);
 segto_007 = 0x80 | TM002.encodeDigit(0);
 TM002.setSegments(&segto_004, 1, 0);
 TM002.setSegments(&segto_005, 1, 1);
 TM002.setSegments(&segto_006, 1, 2);
 TM002.setSegments(&segto_007, 1, 3);

}

//*******************************// //*******************************// //************ LOOP *************// //*******************************// //*******************************//

void loop() {


 //-------------------------------------------//
 //-------------------------------------------//
 //------------ REGLAGE HORLOGE  -------------//
 //-------------------------------------------//
 //-------------------------------------------//
 
 // Bouton TROIS  : MODE réglage
 etatBouton_trois=digitalRead(pinBouton_trois);
 while (etatBouton_trois == 1)
 {
   // On allume la LED R1, qui est la LED Rouge
   digitalWrite(R1, HIGH);
   // On eteind la LED R2, qui est la LED Verte
   digitalWrite(R2, LOW);
   
   etatBouton=digitalRead(pinBouton);
   if (etatBouton == 1)
   {
   // Quand le bouton 1 est en position ON, On allume la LED du joueur 1
   digitalWrite(J1, HIGH);
   // Quand le bouton 1 est en position ON, On eteind la LED du joueur 2
   digitalWrite(J2, LOW);
   }
   else
   {
   // Quand le bouton 1 est en position OFF, On eteind la LED du joueur 1
   digitalWrite(J1, LOW);
   // Quand le bouton 1 est en position OFF, On allume la LED du joueur 1
   digitalWrite(J2, HIGH);
   }
   // Le bouton 2 correspond au réglage de l'horloge, a chaque appui sur le bouton, on ajoute 5 minutes de jeux
   etatBouton_deux=digitalRead(pinBouton_deux);
   if (etatBouton_deux == 0)
   {  
     //On attend 750 milli-seconde (DELAY)
     delay (750);
     // Pour les réglages, On ajoute 300 secondes, ce qui correspond à 5 minutes
     joueur_un_seconde = joueur_un_seconde + 300;
     joueur_deux_seconde = joueur_deux_seconde + 300;
     horloge_un(joueur_un_seconde);
     horloge_deux(joueur_deux_seconde);
   }
   etatBouton_trois=digitalRead(pinBouton_trois);
 }
 
 //-------------------------------------------//
 //-------------------------------------------//
 //------- MODE PARTIE EN COURS  -------------//
 //-------------------------------------------//
 //-------------------------------------------//
 //
 etatBouton_trois=digitalRead(pinBouton_trois);
 // Quand le bouton 3 est à l'état 0, on passe en mode partie, la LED passe au vert (on allume la LED verte et on éteint la LED rouge)
 while (etatBouton_trois == 0)
 {
 
   // On eteind la LED R1, qui est la LED Rouge
   digitalWrite(R1, LOW);
   // On allume la LED R2, qui est la LED Verte
   digitalWrite(R2, HIGH);
   
   // JOUEUR 1
   etatBouton=digitalRead(pinBouton);
   while (etatBouton == 1)
   {
     // On allume la LED J1, qui est la LED Blanche du joueur n°1
     digitalWrite(J1, HIGH);
     // On eteind la LED J2, qui est la LED Blanche du joueur n°2
     digitalWrite(J2, LOW);
     
     etatBouton=digitalRead(pinBouton);
     // Si le temps est égal à 0 alors on stoppe le compteur à 0
     // Sinon, on compte le temps
     if(joueur_un_seconde == 0)
     {
       horloge_un(0);
       etatBouton_trois=digitalRead(pinBouton_trois);
       // Si le bouton réglage est à 1, on initialise le compteur à 5 minutes et on quitte la fonction PARTIE pour se mettre en mode REGLAGE
       if(etatBouton_trois == 1) 
       {
         joueur_un_seconde = 300;
         joueur_deux_seconde = 300;
         horloge_un(joueur_un_seconde);
         horloge_deux(joueur_deux_seconde);
         break;
       };
     }
     else
     {
       // On lance le compte à rebours
       joueur_un_seconde = joueur_un_seconde -1;
       // On utilise la fonction horloge_un, elle est défini à la fin du fichier
       horloge_un(joueur_un_seconde);
       // on laisse passer 1 seconde
       delay (1000);
 
       // Lorsque on quitte le mode PARTIE, on rentre à nouveau dans le mode REGLAGE
       etatBouton_trois=digitalRead(pinBouton_trois);
       if(etatBouton_trois == 1) 
       {
         // Lors du passage en mode réglage on initialise de nouveau l'horloge à 5 minutes (300 secondes)  et on quitte la fonction PARTIE pour se mettre en mode REGLAGE
         joueur_un_seconde = 300;
         joueur_deux_seconde = 300;
         horloge_un(joueur_un_seconde);
         horloge_deux(joueur_deux_seconde);
         break;
       };
     
     }
     


   }
     
   // JOUEUR 2
   etatBouton=digitalRead(pinBouton);
   while (etatBouton == 0)
   {
     // On eteind la LED J1, qui est la LED Blanche du joueur n°1
     digitalWrite(J1, LOW);
     // On allume la LED J2, qui est la LED Blanche du joueur n°2
     digitalWrite(J2, HIGH);
     etatBouton=digitalRead(pinBouton);
     
     
     // Si le temps est égal à 0 alors on stoppe le compteur à 0
     // Sinon, on compte le temps
     if(joueur_deux_seconde == 0)
     {
       horloge_deux(0);
       etatBouton_trois=digitalRead(pinBouton_trois);
       // Si le bouton réglage est à 1, on initialise le compteur à 5 minutes et on quitte la fonction PARTIE pour se mettre en mode REGLAGE
       if(etatBouton_trois == 1)       
       {
         joueur_un_seconde = 300;
         joueur_deux_seconde = 300;
         horloge_un(joueur_un_seconde);
         horloge_deux(joueur_deux_seconde);
         // Avec break on quitte la fonction PARTIE pour se mettre en mode REGLAGE
         break;
       };
     }
     else
     {
       // On lance le compte à rebours
       joueur_deux_seconde = joueur_deux_seconde -1;
       // On utilise la fonction horloge_deux, elle est défini à la fin du fichier
       horloge_deux(joueur_deux_seconde);
       // on laisse passer 1 seconde
       delay (1000);
       // Lorsque on quitte le mode PARTIE, on rentre à nouveau dans le mode REGLAGE
       etatBouton_trois=digitalRead(pinBouton_trois);
       if(etatBouton_trois == 1)       
       {
         // Lors du passage en mode réglage on initialise de nouveau l'horloge à 5 minutes (300 secondes) et on quitte la fonction PARTIE pour se mettre en mode REGLAGE
         joueur_un_seconde = 300;
         joueur_deux_seconde = 300;
         horloge_un(joueur_un_seconde);
         horloge_deux(joueur_deux_seconde);
         // Avec break on quitte la fonction PARTIE pour se mettre en mode REGLAGE
         break;
       };
     }
     
   }
   
 }


} // FIN DE LA FONCTION LOOP

 //-------------------------------------------//
 //-------------------------------------------//
 //-------------- LES FONCTIONS  -------------//
 //-------------------------------------------//
 //-------------------------------------------//

void horloge_un(int joueur_un_seconde) {

     // On extrait les minutes en divisant par soixante
     joueur_un_minute_total = joueur_un_seconde / 60;
     // On extrait la dizaine des minutes en divisant par 10
     joueur_un_minute_dizaine = joueur_un_minute_total / 10;
   
     // On extrait les unités des minutes avec un modulo 10
     joueur_un_minute_unite = joueur_un_minute_total % 10;
     
     // On extrait les secondes en divisant par soixante
     joueur_un_seconde_total = joueur_un_seconde % 60;
     // On extrait la dizaine des secondes en divisant par 10
     joueur_un_seconde_dizaine = joueur_un_seconde_total / 10;
     // On extrait les unités des secondes avec un modulo 10
     joueur_un_seconde_unite = joueur_un_seconde_total % 10;
     // Déclaration des variables
     uint8_t segto_000;
     uint8_t segto_001;
     uint8_t segto_002;
     uint8_t segto_003;
     
     // 0x80 correspond à la colonne du milieu
     segto_000 = 0x80 | TM001.encodeDigit(joueur_un_minute_dizaine);
     segto_001 = 0x80 | TM001.encodeDigit(joueur_un_minute_unite);
     segto_002 = 0x80 | TM001.encodeDigit(joueur_un_seconde_dizaine);
     segto_003 = 0x80 | TM001.encodeDigit(joueur_un_seconde_unite);
     // affichage du temps passé sur les 4 digits du module 1 : TM001
     TM001.setSegments(&segto_000, 1, 0);
     TM001.setSegments(&segto_001, 1, 1);
     TM001.setSegments(&segto_002, 1, 2);
     TM001.setSegments(&segto_003, 1, 3);
     

}

void horloge_deux(int joueur_deux_seconde) {

     // On extrait les minutes en divisant par soixante
     joueur_deux_minute_total = joueur_deux_seconde / 60;
   
     // On extrait la dizaine des minutes en divisant par 10
     joueur_deux_minute_dizaine = joueur_deux_minute_total / 10;
   
     // On extrait les unités des minutes avec un modulo 10
     joueur_deux_minute_unite = joueur_deux_minute_total % 10;
   
     // On extrait les secondes en divisant par soixante
     joueur_deux_seconde_total = joueur_deux_seconde % 60;
     // On extrait la dizaine des secondes en divisant par 10
     joueur_deux_seconde_dizaine = joueur_deux_seconde_total / 10;
   
     // On extrait les unités des secondes avec un modulo 10
     joueur_deux_seconde_unite = joueur_deux_seconde_total % 10;
     // Déclaration des variables
     uint8_t segto_004;
     uint8_t segto_005;
     uint8_t segto_006;
     uint8_t segto_007;
     
     // 0x80 correspond à la colonne du milieu
     segto_004 = 0x80 | TM002.encodeDigit(joueur_deux_minute_dizaine);
     segto_005 = 0x80 | TM002.encodeDigit(joueur_deux_minute_unite);
     segto_006 = 0x80 | TM002.encodeDigit(joueur_deux_seconde_dizaine);
     segto_007 = 0x80 | TM002.encodeDigit(joueur_deux_seconde_unite);
     // affichage du temps passé sur les 4 digits du module 2 : TM002
     TM002.setSegments(&segto_004, 1, 0);
     TM002.setSegments(&segto_005, 1, 1);
     TM002.setSegments(&segto_006, 1, 2);
     TM002.setSegments(&segto_007, 1, 3);

}

Aucune page n'utilise ce fichier.