![](/media/cache/profiles/6ac13e46c8006acffa10354bf8724630_2.jpg.50x50_q85.jpg)
Horloge RTC
Dependencies: ihm_L476_full RTC_IUT
main.cpp@5:6ce20ff7927b, 2020-07-27 (annotated)
- Committer:
- grimwald
- Date:
- Mon Jul 27 12:35:15 2020 +0000
- Revision:
- 5:6ce20ff7927b
- Parent:
- 4:86341306d9d7
- Child:
- 6:21be959149c3
post bus update;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
grimwald | 4:86341306d9d7 | 1 | #include "RTC_IUT.h"//bibliotheque de l'afficheur |
grimwald | 4:86341306d9d7 | 2 | #include "ihm_L476.h"//bibliotheque du chrono |
grimwald | 5:6ce20ff7927b | 3 | DigitalIn BPC (PA_0,PullNone) ; // bouton centre |
grimwald | 4:86341306d9d7 | 4 | DigitalIn BPL (PA_1,PullDown) ;//left |
grimwald | 4:86341306d9d7 | 5 | DigitalIn BPR(PA_2,PullDown) ;//right |
grimwald | 4:86341306d9d7 | 6 | DigitalIn BPU(PA_3,PullDown) ;//up |
grimwald | 4:86341306d9d7 | 7 | DigitalIn BPD (PA_5,PullDown) ;//down |
grimwald | 4:86341306d9d7 | 8 | DigitalOut LG (PE_8) ; // led verte |
grimwald | 4:86341306d9d7 | 9 | DigitalOut LR (PB_2) ; // led rouge |
grimwald | 2:29559ef1623d | 10 | |
grimwald | 4:86341306d9d7 | 11 | IHM_L476 ihm; // on chosis des noms qui nous serviront a appelé les fonctions dans les bibliotheque |
grimwald | 5:6ce20ff7927b | 12 | Rtc rtc; |
grimwald | 4:86341306d9d7 | 13 | time_t heure_t,minute_t,seconde_t;//on nomme nos valeur qui seront sous le format time_t |
grimwald | 2:29559ef1623d | 14 | |
grimwald | 2:29559ef1623d | 15 | // prototype et variables globales et constantes |
grimwald | 4:86341306d9d7 | 16 | static unsigned char Heure_t=23,Minute_t=59,Seconde_t = 50; // on defini l'heure avec une unsigned char |
grimwald | 4:86341306d9d7 | 17 | |
grimwald | 2:29559ef1623d | 18 | void automate(void); |
grimwald | 4:86341306d9d7 | 19 | |
grimwald | 2:29559ef1623d | 20 | |
grimwald | 2:29559ef1623d | 21 | |
gr91 | 0:b4a900df72eb | 22 | int main() |
gr91 | 0:b4a900df72eb | 23 | { |
grimwald | 4:86341306d9d7 | 24 | rtc.SetHour(Heure_t); |
grimwald | 4:86341306d9d7 | 25 | rtc.SetMin(Minute_t);// On initialise l'heure , les minutes et les secondes |
grimwald | 4:86341306d9d7 | 26 | rtc.SetSec(Seconde_t); |
grimwald | 4:86341306d9d7 | 27 | rtc.SetYear(2020); |
grimwald | 4:86341306d9d7 | 28 | ihm.LCD_printf("CLOCK"); |
grimwald | 2:29559ef1623d | 29 | // début de l'application |
grimwald | 2:29559ef1623d | 30 | while(1) { |
grimwald | 4:86341306d9d7 | 31 | wait(0.1); |
grimwald | 2:29559ef1623d | 32 | automate(); // ce qui se produit sur top de clock |
gr91 | 1:1e5f482dad5b | 33 | } |
gr91 | 0:b4a900df72eb | 34 | } |
grimwald | 2:29559ef1623d | 35 | |
grimwald | 2:29559ef1623d | 36 | |
grimwald | 2:29559ef1623d | 37 | void automate(void) |
grimwald | 2:29559ef1623d | 38 | { |
grimwald | 2:29559ef1623d | 39 | // définition d'un type énuméré permettant de manipuler l'état de l'automate |
grimwald | 2:29559ef1623d | 40 | // par son nom |
grimwald | 5:6ce20ff7927b | 41 | typedef enum {affichage=0, Minutep =1, Minutem =2, Heurep= 3,Heurem =4,Calendrier=5,Jour+=6,Jour} type_etat; |
grimwald | 4:86341306d9d7 | 42 | type_etat etat_actuel = affichage ; // déclaration état actuel init. à etat0 |
grimwald | 4:86341306d9d7 | 43 | static type_etat etat_futur = affichage; // déclaration état futur |
grimwald | 5:6ce20ff7927b | 44 | int entreeb, entreeh, entreeg, entreed , entree; |
grimwald | 4:86341306d9d7 | 45 | |
grimwald | 2:29559ef1623d | 46 | // gestion des entrees |
grimwald | 5:6ce20ff7927b | 47 | entree = BPC;// c'est le bouton centre |
grimwald | 4:86341306d9d7 | 48 | entreeb = BPD;// c'est le bouton bas |
grimwald | 4:86341306d9d7 | 49 | entreeh = BPU; |
grimwald | 4:86341306d9d7 | 50 | entreeg = BPL; |
grimwald | 4:86341306d9d7 | 51 | entreed = BPR; |
grimwald | 5:6ce20ff7927b | 52 | |
grimwald | 2:29559ef1623d | 53 | // gestion du diagramme de transition |
grimwald | 2:29559ef1623d | 54 | etat_actuel = etat_futur; // mise à jour de l'état |
grimwald | 2:29559ef1623d | 55 | // calul de l'éat futur en fonction de l'état actuel et des entrées |
grimwald | 4:86341306d9d7 | 56 | |
grimwald | 4:86341306d9d7 | 57 | |
grimwald | 2:29559ef1623d | 58 | switch(etat_actuel) { |
grimwald | 3:69c53ab43e4e | 59 | //les différents états en accord avec le diagramme de transition |
grimwald | 4:86341306d9d7 | 60 | |
grimwald | 4:86341306d9d7 | 61 | |
grimwald | 4:86341306d9d7 | 62 | case affichage : |
grimwald | 5:6ce20ff7927b | 63 | if(entreed)etat_futur= Minutep;//si j'appuie sur droite j'augmente les minute de 1 |
grimwald | 5:6ce20ff7927b | 64 | if(entreeg)etat_futur=Minutem;//si j'appuie a gauche je diminue les minutes de |
grimwald | 5:6ce20ff7927b | 65 | if(entreeh)etat_futur=Heurep;//si j'appuie sur haut j'augmente les heures de 1 |
grimwald | 4:86341306d9d7 | 66 | if(entreeb)etat_futur=Heurem;//si j'appuie en bas je diminue les heures de 1 |
grimwald | 5:6ce20ff7927b | 67 | if(entree)etat_futur=Calendrier;//si j'appuie je vais sur le calendrier |
grimwald | 4:86341306d9d7 | 68 | |
grimwald | 5:6ce20ff7927b | 69 | if(Minute_t > 59 ) { // si Minute_t depasse 59 minutes alors Minute_t reviens a 0 et j'incremente Heure_t de 1 |
grimwald | 5:6ce20ff7927b | 70 | Minute_t=00; |
grimwald | 5:6ce20ff7927b | 71 | rtc.SetHour(Heure_t++); |
grimwald | 4:86341306d9d7 | 72 | } |
grimwald | 4:86341306d9d7 | 73 | if(Heure_t > 23 ) {//si Heure_t depasse 23 heures alors Heure_t reviens a 0 |
grimwald | 4:86341306d9d7 | 74 | Heure_t = 00; |
grimwald | 4:86341306d9d7 | 75 | } |
grimwald | 5:6ce20ff7927b | 76 | |
grimwald | 5:6ce20ff7927b | 77 | if(Seconde_t > 59 ) {// si Seconde_t depasse 59 secondes alors Secondes_t reviens a 0 et j'incremente Minute_t de 1 |
grimwald | 4:86341306d9d7 | 78 | Seconde_t = 00; |
grimwald | 4:86341306d9d7 | 79 | rtc.SetMin(Minute_t++); |
grimwald | 4:86341306d9d7 | 80 | } |
grimwald | 3:69c53ab43e4e | 81 | break; |
grimwald | 5:6ce20ff7927b | 82 | |
grimwald | 5:6ce20ff7927b | 83 | |
grimwald | 4:86341306d9d7 | 84 | case Minutep: |
grimwald | 5:6ce20ff7927b | 85 | rtc.SetMin(Minute_t++); // j'incremente Minute_t |
grimwald | 4:86341306d9d7 | 86 | rtc.SetSec(00);//je met les secondes a zero a chaque changement d'etat |
grimwald | 4:86341306d9d7 | 87 | etat_futur = affichage;// je retourne a l'affichage |
grimwald | 4:86341306d9d7 | 88 | break; |
grimwald | 4:86341306d9d7 | 89 | case Minutem: |
grimwald | 4:86341306d9d7 | 90 | rtc.SetMin(Minute_t--);//je diminue Minute_t |
grimwald | 4:86341306d9d7 | 91 | rtc.SetSec(00); |
grimwald | 4:86341306d9d7 | 92 | etat_futur = affichage; |
grimwald | 2:29559ef1623d | 93 | break; |
grimwald | 4:86341306d9d7 | 94 | |
grimwald | 4:86341306d9d7 | 95 | case Heurep: |
grimwald | 4:86341306d9d7 | 96 | rtc.SetHour(Heure_t++);//j'incremente Heure_t |
grimwald | 4:86341306d9d7 | 97 | rtc.SetSec(00); |
grimwald | 4:86341306d9d7 | 98 | etat_futur = affichage; |
grimwald | 4:86341306d9d7 | 99 | break; |
grimwald | 4:86341306d9d7 | 100 | |
grimwald | 5:6ce20ff7927b | 101 | case Heurem : |
grimwald | 5:6ce20ff7927b | 102 | rtc.SetHour(Heure_t--); |
grimwald | 4:86341306d9d7 | 103 | rtc.SetSec(00); |
grimwald | 4:86341306d9d7 | 104 | etat_futur = affichage; |
grimwald | 4:86341306d9d7 | 105 | break; |
grimwald | 5:6ce20ff7927b | 106 | case Calendrier: |
grimwald | 5:6ce20ff7927b | 107 | break; |
grimwald | 4:86341306d9d7 | 108 | |
grimwald | 4:86341306d9d7 | 109 | |
grimwald | 4:86341306d9d7 | 110 | |
grimwald | 4:86341306d9d7 | 111 | |
grimwald | 2:29559ef1623d | 112 | } |
grimwald | 2:29559ef1623d | 113 | // valeurs des sorties en fonction de l'état actuel |
grimwald | 2:29559ef1623d | 114 | switch(etat_actuel) { |
grimwald | 4:86341306d9d7 | 115 | |
grimwald | 4:86341306d9d7 | 116 | |
grimwald | 4:86341306d9d7 | 117 | |
grimwald | 4:86341306d9d7 | 118 | case affichage : |
grimwald | 2:29559ef1623d | 119 | ihm.BAR_set(0); |
grimwald | 5:6ce20ff7927b | 120 | heure_t= rtc.GetHour(); |
grimwald | 5:6ce20ff7927b | 121 | minute_t = rtc.GetMin();//J'utilise les valeurs qui ont été etablie avant et je les met dans des variables |
grimwald | 5:6ce20ff7927b | 122 | seconde_t = rtc.GetSec(); |
grimwald | 4:86341306d9d7 | 123 | ihm.LCD_printf("%02d:%02d:%02d",heure_t,minute_t,seconde_t); |
grimwald | 5:6ce20ff7927b | 124 | LG=0;// je met les leds a 0 pour un effet de clignotement |
grimwald | 4:86341306d9d7 | 125 | LR=0; |
grimwald | 5:6ce20ff7927b | 126 | |
grimwald | 2:29559ef1623d | 127 | break; |
grimwald | 4:86341306d9d7 | 128 | |
grimwald | 4:86341306d9d7 | 129 | |
grimwald | 4:86341306d9d7 | 130 | |
grimwald | 4:86341306d9d7 | 131 | case Minutep : |
grimwald | 4:86341306d9d7 | 132 | ihm.BAR_set(2); |
grimwald | 4:86341306d9d7 | 133 | heure_t= rtc.GetHour(); |
grimwald | 5:6ce20ff7927b | 134 | minute_t = rtc.GetMin();//J'utilise les valeurs qui ont été etablie avant et je les met dans des variables |
grimwald | 5:6ce20ff7927b | 135 | seconde_t = rtc.GetSec(); |
grimwald | 5:6ce20ff7927b | 136 | ihm.LCD_printf("%02d:%02d:%02d",heure_t,minute_t,seconde_t); |
grimwald | 5:6ce20ff7927b | 137 | LG=1;// j'allume verte pour l'incrementation |
grimwald | 4:86341306d9d7 | 138 | LR=0; |
grimwald | 4:86341306d9d7 | 139 | break; |
grimwald | 4:86341306d9d7 | 140 | case Minutem : |
grimwald | 4:86341306d9d7 | 141 | ihm.BAR_set(2); |
grimwald | 4:86341306d9d7 | 142 | ihm.LCD_printf("%02d:%02d:%02d",heure_t,minute_t,seconde_t); |
grimwald | 5:6ce20ff7927b | 143 | LG=0;// j'allume rouge pour la diminution |
grimwald | 4:86341306d9d7 | 144 | LR=1; |
grimwald | 4:86341306d9d7 | 145 | break; |
grimwald | 4:86341306d9d7 | 146 | case Heurep : |
grimwald | 2:29559ef1623d | 147 | ihm.BAR_set(1);//debug de l'état |
grimwald | 4:86341306d9d7 | 148 | ihm.LCD_printf("%02d:%02d:%02d",heure_t,minute_t,seconde_t);//affichage de l'heure en format 00:00:00 |
grimwald | 5:6ce20ff7927b | 149 | LG=1;// j'allume verte pour l'incrementation |
grimwald | 5:6ce20ff7927b | 150 | LR=0; |
grimwald | 2:29559ef1623d | 151 | break; |
grimwald | 4:86341306d9d7 | 152 | |
grimwald | 4:86341306d9d7 | 153 | case Heurem : |
grimwald | 4:86341306d9d7 | 154 | ihm.BAR_set(1); |
grimwald | 4:86341306d9d7 | 155 | ihm.LCD_printf("%02d:%02d:%02d",Heure_t,Minute_t,seconde_t); |
grimwald | 5:6ce20ff7927b | 156 | LG=0; |
grimwald | 4:86341306d9d7 | 157 | LR=1;// j'allume rouge pour la diminution |
grimwald | 2:29559ef1623d | 158 | break; |
grimwald | 5:6ce20ff7927b | 159 | case Calendrier: |
grimwald | 5:6ce20ff7927b | 160 | break; |
grimwald | 4:86341306d9d7 | 161 | |
grimwald | 4:86341306d9d7 | 162 | |
grimwald | 4:86341306d9d7 | 163 | |
grimwald | 2:29559ef1623d | 164 | } |
grimwald | 2:29559ef1623d | 165 | } |