Horloge RTC

Dependencies:   ihm_L476_full RTC_IUT

Revision:
5:6ce20ff7927b
Parent:
4:86341306d9d7
Child:
6:21be959149c3
--- a/main.cpp	Wed Jun 17 21:34:59 2020 +0000
+++ b/main.cpp	Mon Jul 27 12:35:15 2020 +0000
@@ -1,6 +1,6 @@
 #include "RTC_IUT.h"//bibliotheque de l'afficheur
 #include "ihm_L476.h"//bibliotheque du chrono
-//DigitalIn BPC (PA_0,PullNone) ;  // bouton centre
+DigitalIn BPC (PA_0,PullNone) ;  // bouton centre
 DigitalIn BPL (PA_1,PullDown) ;//left
 DigitalIn BPR(PA_2,PullDown) ;//right
 DigitalIn BPU(PA_3,PullDown) ;//up
@@ -9,7 +9,7 @@
 DigitalOut LR (PB_2) ;  // led rouge
 
 IHM_L476 ihm; // on chosis des noms qui nous serviront a appelé les fonctions dans les bibliotheque
-Rtc rtc; 
+Rtc rtc;
 time_t heure_t,minute_t,seconde_t;//on nomme nos valeur qui seront sous le format time_t
 
 // prototype et variables globales et constantes
@@ -38,17 +38,18 @@
 {
     // définition d'un type énuméré permettant de manipuler l'état de l'automate
     // par son nom
-    typedef enum {affichage=0, Minutep =1, Minutem =2, Heurep  = 3,Heurem =4} type_etat;
+    typedef enum {affichage=0, Minutep =1, Minutem =2, Heurep= 3,Heurem =4,Calendrier=5,Jour+=6,Jour} type_etat;
     type_etat etat_actuel = affichage ;   // déclaration état actuel init. à etat0
     static type_etat etat_futur = affichage;  // déclaration état futur
-    int entreeb, entreeh, entreeg, entreed;
+    int entreeb, entreeh, entreeg, entreed , entree;
 
     // gestion des entrees
-    //entree = BPC;// c'est le bouton centre
+    entree = BPC;// c'est le bouton centre
     entreeb = BPD;// c'est le bouton bas
     entreeh = BPU;
     entreeg = BPL;
     entreed = BPR;
+    
     // gestion du diagramme de transition
     etat_actuel = etat_futur;   // mise à jour de l'état
     // calul de l'éat futur en fonction de l'état actuel et des entrées
@@ -59,28 +60,29 @@
 
 
         case affichage :
-            if(entreed)etat_futur= Minutep;//si j'appui sur droite j'augmente les minute de 1
-            if(entreeg)etat_futur=Minutem;//si j'appuie a gauche je diminue les minutes de 
-            if(entreeh)etat_futur=Heurep;//si j'appui sur haut j'augmente les heures de 1
+            if(entreed)etat_futur= Minutep;//si j'appuie sur droite j'augmente les minute de 1
+            if(entreeg)etat_futur=Minutem;//si j'appuie a gauche je diminue les minutes de
+            if(entreeh)etat_futur=Heurep;//si j'appuie sur haut j'augmente les heures de 1
             if(entreeb)etat_futur=Heurem;//si j'appuie en bas je diminue les heures de 1
+            if(entree)etat_futur=Calendrier;//si j'appuie je vais sur le calendrier
 
-            if(Minute_t >59  ) { // si Minute_t depasse 59 minutes alors Minute_t reviens a 0 et j'incremente Heure_t de 1
-                Minute_t=00;     
-               rtc.SetHour(Heure_t++);
+            if(Minute_t > 59  ) { // si Minute_t depasse 59 minutes alors Minute_t reviens a 0 et j'incremente Heure_t de 1
+                Minute_t=00;
+                rtc.SetHour(Heure_t++);
             }
             if(Heure_t > 23 ) {//si Heure_t depasse 23 heures alors Heure_t reviens a 0
                 Heure_t = 00;
             }
-            
-            if(Seconde_t >59 ) {// si Seconde_t depasse 59 secondes alors Secondes_t reviens a 0 et j'incremente Minute_t de 1
+
+            if(Seconde_t > 59 ) {// si Seconde_t depasse 59 secondes alors Secondes_t reviens a 0 et j'incremente Minute_t de 1
                 Seconde_t = 00;
                 rtc.SetMin(Minute_t++);
             }
             break;
-        
-        
+
+
         case Minutep:
-           rtc.SetMin(Minute_t++); // j'incremente Minute_t
+            rtc.SetMin(Minute_t++); // j'incremente Minute_t
             rtc.SetSec(00);//je met les secondes a zero a chaque changement d'etat
             etat_futur = affichage;// je retourne a l'affichage
             break;
@@ -96,11 +98,13 @@
             etat_futur = affichage;
             break;
 
-        case Heurem:
-           rtc.SetHour(Heure_t--);
+        case Heurem :
+            rtc.SetHour(Heure_t--);
             rtc.SetSec(00);
             etat_futur = affichage;
             break;
+        case Calendrier:
+            break;
 
 
 
@@ -113,13 +117,13 @@
 
         case affichage :
             ihm.BAR_set(0);
-             heure_t= rtc.GetHour();
-             minute_t = rtc.GetMin();//J'utilise les valeurs qui ont été etablie avant et je les met dans des variables
-             seconde_t = rtc.GetSec();
+            heure_t= rtc.GetHour();
+            minute_t = rtc.GetMin();//J'utilise les valeurs qui ont été etablie avant et je les met dans des variables
+            seconde_t = rtc.GetSec();
             ihm.LCD_printf("%02d:%02d:%02d",heure_t,minute_t,seconde_t);
-            LG=0;// je met les leds a 0 pour un effet de clignotement 
+            LG=0;// je met les leds a 0 pour un effet de clignotement
             LR=0;
-            
+
             break;
 
 
@@ -127,31 +131,33 @@
         case Minutep :
             ihm.BAR_set(2);
             heure_t= rtc.GetHour();
-             minute_t = rtc.GetMin();//J'utilise les valeurs qui ont été etablie avant et je les met dans des variables
-             seconde_t = rtc.GetSec();
-           ihm.LCD_printf("%02d:%02d:%02d",heure_t,minute_t,seconde_t);
-             LG=1;// j'allume verte pour l'incrementation
+            minute_t = rtc.GetMin();//J'utilise les valeurs qui ont été etablie avant et je les met dans des variables
+            seconde_t = rtc.GetSec();
+            ihm.LCD_printf("%02d:%02d:%02d",heure_t,minute_t,seconde_t);
+            LG=1;// j'allume verte pour l'incrementation
             LR=0;
             break;
         case Minutem :
             ihm.BAR_set(2);
             ihm.LCD_printf("%02d:%02d:%02d",heure_t,minute_t,seconde_t);
-             LG=0;// j'allume rouge pour la diminution
+            LG=0;// j'allume rouge pour la diminution
             LR=1;
             break;
         case Heurep :
             ihm.BAR_set(1);//debug de l'état
             ihm.LCD_printf("%02d:%02d:%02d",heure_t,minute_t,seconde_t);//affichage de l'heure en format 00:00:00
-             LG=1;// j'allume verte pour l'incrementation
-             LR=0;
+            LG=1;// j'allume verte pour l'incrementation
+            LR=0;
             break;
 
         case Heurem :
             ihm.BAR_set(1);
             ihm.LCD_printf("%02d:%02d:%02d",Heure_t,Minute_t,seconde_t);
-             LG=0;
+            LG=0;
             LR=1;// j'allume rouge pour la diminution
             break;
+        case Calendrier:
+            break;