![](/media/cache/profiles/6ac13e46c8006acffa10354bf8724630_2.jpg.50x50_q85.jpg)
Horloge RTC
Dependencies: ihm_L476_full RTC_IUT
Diff: main.cpp
- 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;