Horloge RTC

Dependencies:   ihm_L476_full RTC_IUT

Committer:
grimwald
Date:
Sun Aug 30 12:38:39 2020 +0000
Revision:
6:21be959149c3
Parent:
5:6ce20ff7927b
Clock;

Who changed what in which revision?

UserRevisionLine numberNew 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 6:21be959149c3 13 time_t heure_t,minute_t,seconde_t,mois_t,jour_t,annee_t;//on nomme nos valeur qui seront sous le format time_t
grimwald 6:21be959149c3 14 Serial pc(SERIAL_TX, SERIAL_RX);//permet la communication avec le terminal en liason serie
grimwald 6:21be959149c3 15
grimwald 6:21be959149c3 16 Timer tempo1,tempo2,tempo3,tempo4,tempsS;
grimwald 2:29559ef1623d 17
grimwald 2:29559ef1623d 18 // prototype et variables globales et constantes
grimwald 6:21be959149c3 19 static unsigned char Heure_t=23,Minute_t=59,Seconde_t = 50,Mois_t=01,Jour_t=01,Annee_t=18; // on defini l'heure/date avec une unsigned char
grimwald 4:86341306d9d7 20
grimwald 2:29559ef1623d 21 void automate(void);
grimwald 4:86341306d9d7 22
grimwald 2:29559ef1623d 23
grimwald 2:29559ef1623d 24
gr91 0:b4a900df72eb 25 int main()
gr91 0:b4a900df72eb 26 {
grimwald 6:21be959149c3 27
grimwald 4:86341306d9d7 28 rtc.SetHour(Heure_t);
grimwald 6:21be959149c3 29 rtc.SetMin(Minute_t);// On initialise l'heure , les minutes et les secondes au valeur demandes
grimwald 4:86341306d9d7 30 rtc.SetSec(Seconde_t);
grimwald 6:21be959149c3 31
grimwald 6:21be959149c3 32 rtc.SetDay(Jour_t);
grimwald 6:21be959149c3 33 rtc.SetMon(Mois_t);//on initialise la date au valeurs demandes
grimwald 6:21be959149c3 34 rtc.SetYear(Annee_t);
grimwald 6:21be959149c3 35
grimwald 6:21be959149c3 36 ihm.LCD_printf("CLK:OS");
grimwald 2:29559ef1623d 37 // début de l'application
grimwald 2:29559ef1623d 38 while(1) {
grimwald 4:86341306d9d7 39 wait(0.1);
grimwald 2:29559ef1623d 40 automate(); // ce qui se produit sur top de clock
gr91 1:1e5f482dad5b 41 }
gr91 0:b4a900df72eb 42 }
grimwald 2:29559ef1623d 43
grimwald 2:29559ef1623d 44
grimwald 2:29559ef1623d 45 void automate(void)
grimwald 2:29559ef1623d 46 {
grimwald 2:29559ef1623d 47 // définition d'un type énuméré permettant de manipuler l'état de l'automate
grimwald 2:29559ef1623d 48 // par son nom
grimwald 6:21be959149c3 49 typedef enum {Menu=0,Horloge=1,Calendrier=2,inter=3,Alarme=4,bip=5,bip2=6,Minuteur=7} type_etat;
grimwald 6:21be959149c3 50 type_etat etat_actuel = Menu ; // déclaration état actuel init. à etat0
grimwald 6:21be959149c3 51 static type_etat etat_futur = Menu; // déclaration état futur
grimwald 6:21be959149c3 52
grimwald 6:21be959149c3 53 int entreeb, entreeh, entreeg, entreed, entree;
grimwald 6:21be959149c3 54 static int compteur=0;
grimwald 6:21be959149c3 55 static int cptMenu=0;
grimwald 6:21be959149c3 56
grimwald 6:21be959149c3 57 static int Heure_a=00,Minute_a =00,Seconde_a=00; // creation de mutliple variables
grimwald 6:21be959149c3 58 static int cpt_a=0,choix_a=0;
grimwald 6:21be959149c3 59
grimwald 6:21be959149c3 60 static int Heure_m=00,Minute_m =00,Seconde_m=00;
grimwald 6:21be959149c3 61 static int cpt_m=0,choix_m=0;
grimwald 6:21be959149c3 62
grimwald 6:21be959149c3 63
grimwald 4:86341306d9d7 64
grimwald 2:29559ef1623d 65 // gestion des entrees
grimwald 5:6ce20ff7927b 66 entree = BPC;// c'est le bouton centre
grimwald 4:86341306d9d7 67 entreeb = BPD;// c'est le bouton bas
grimwald 6:21be959149c3 68 entreeh = BPU;//haut
grimwald 6:21be959149c3 69 entreeg = BPL;//gauche
grimwald 6:21be959149c3 70 entreed = BPR;//droit
grimwald 6:21be959149c3 71
grimwald 2:29559ef1623d 72 // gestion du diagramme de transition
grimwald 2:29559ef1623d 73 etat_actuel = etat_futur; // mise à jour de l'état
grimwald 2:29559ef1623d 74 // calul de l'éat futur en fonction de l'état actuel et des entrées
grimwald 4:86341306d9d7 75
grimwald 4:86341306d9d7 76
grimwald 2:29559ef1623d 77 switch(etat_actuel) {
grimwald 3:69c53ab43e4e 78 //les différents états en accord avec le diagramme de transition
grimwald 4:86341306d9d7 79
grimwald 6:21be959149c3 80 case Menu :
grimwald 4:86341306d9d7 81
grimwald 6:21be959149c3 82 //a chaque que j'appui sur droite ou gauche j'ajoute ou je retire 1 au compteur ensuite le programme va regarder a combien est le compteur
grimwald 6:21be959149c3 83 //et cela correspondera a un affichage du menu ensuite il reste appuyer pour changer d'etat correspondant
grimwald 6:21be959149c3 84 if (cptMenu == 0) {
grimwald 6:21be959149c3 85 ihm.LCD_printf("HORLOGE\r");
grimwald 6:21be959149c3 86 if(entree) {
grimwald 6:21be959149c3 87 etat_futur = Horloge;
grimwald 6:21be959149c3 88 }
grimwald 4:86341306d9d7 89 }
grimwald 6:21be959149c3 90 if (cptMenu == 1) {
grimwald 6:21be959149c3 91 ihm.LCD_printf("CALENDRIER\r");
grimwald 6:21be959149c3 92 if(entree) {
grimwald 6:21be959149c3 93 etat_futur = Calendrier;
grimwald 6:21be959149c3 94 }
grimwald 6:21be959149c3 95 }
grimwald 6:21be959149c3 96 if (cptMenu == 2) {
grimwald 6:21be959149c3 97 ihm.LCD_printf("ALARME\r");
grimwald 6:21be959149c3 98 if(entree) {
grimwald 6:21be959149c3 99 etat_futur = Alarme;
grimwald 6:21be959149c3 100 }
grimwald 6:21be959149c3 101 }
grimwald 6:21be959149c3 102 if (cptMenu == 3) {
grimwald 6:21be959149c3 103 ihm.LCD_printf("MINUTEUR\r");
grimwald 6:21be959149c3 104 if(entree) {
grimwald 6:21be959149c3 105 etat_futur = Minuteur;
grimwald 6:21be959149c3 106 }
grimwald 4:86341306d9d7 107 }
grimwald 5:6ce20ff7927b 108
grimwald 6:21be959149c3 109
grimwald 6:21be959149c3 110 if(entreed) {
grimwald 6:21be959149c3 111 cptMenu++;
grimwald 6:21be959149c3 112 LG=1;// j'allume verte pour l'incrementation
grimwald 6:21be959149c3 113 LR=0;
grimwald 6:21be959149c3 114
grimwald 6:21be959149c3 115
grimwald 6:21be959149c3 116 }
grimwald 6:21be959149c3 117 if(entreeg) {
grimwald 6:21be959149c3 118 cptMenu--;
grimwald 6:21be959149c3 119 LG=0;// j'allume verte pour l'incrementation
grimwald 6:21be959149c3 120 LR=1;
grimwald 6:21be959149c3 121
grimwald 6:21be959149c3 122 }
grimwald 6:21be959149c3 123 if(cptMenu > 3 or cptMenu<0) {//si le compteur depasse une certaine valeur il revient au depart
grimwald 6:21be959149c3 124 cptMenu=0;
grimwald 6:21be959149c3 125 }
grimwald 6:21be959149c3 126 if (cpt_a == 1 && Heure_a == heure_t && Minute_a == minute_t && Seconde_a == seconde_t) {//alarme
grimwald 6:21be959149c3 127 pc.printf("bip bip");
grimwald 6:21be959149c3 128 etat_futur=bip;
grimwald 6:21be959149c3 129 }
grimwald 6:21be959149c3 130 if (cpt_m == 1 && Heure_m == 00 && Minute_m == 00 && Seconde_m == 00) {//alarme minuteur
grimwald 6:21be959149c3 131 pc.printf("bip bip");
grimwald 6:21be959149c3 132 etat_futur=bip2;
grimwald 6:21be959149c3 133 }
grimwald 6:21be959149c3 134 break;
grimwald 6:21be959149c3 135
grimwald 6:21be959149c3 136
grimwald 6:21be959149c3 137 case Horloge :
grimwald 6:21be959149c3 138
grimwald 6:21be959149c3 139
grimwald 6:21be959149c3 140 if(entreed) {
grimwald 6:21be959149c3 141 rtc.SetMin(Minute_t++); // j'incremente Minute_t
grimwald 6:21be959149c3 142 rtc.SetSec(00);//je met les secondes a zero a chaque changement d'etat
grimwald 6:21be959149c3 143 heure_t = rtc.GetHour();
grimwald 6:21be959149c3 144 rtc.SetMin(Minute_t);
grimwald 6:21be959149c3 145 rtc.SetHour(Heure_t);
grimwald 6:21be959149c3 146 LG=1;// j'allume verte pour l'incrementation
grimwald 6:21be959149c3 147 LR=0;
grimwald 6:21be959149c3 148 }//si j'appuie sur droite j'augmente les minute de 1
grimwald 6:21be959149c3 149
grimwald 6:21be959149c3 150 if(entreeg) {
grimwald 6:21be959149c3 151 rtc.SetMin(Minute_t--);//je diminue Minute_t
grimwald 6:21be959149c3 152 heure_t = rtc.GetHour();
grimwald 6:21be959149c3 153 rtc.SetMin(Minute_t);
grimwald 6:21be959149c3 154 rtc.SetHour(Heure_t);
grimwald 6:21be959149c3 155 rtc.SetSec(00);
grimwald 6:21be959149c3 156
grimwald 6:21be959149c3 157
grimwald 6:21be959149c3 158 LG=0;// j'allume rouge pour la diminution
grimwald 6:21be959149c3 159 LR=1;
grimwald 6:21be959149c3 160 }//si j'appuie a gauche je diminue les minutes de
grimwald 6:21be959149c3 161
grimwald 6:21be959149c3 162 if(entreeh) {
grimwald 6:21be959149c3 163 rtc.SetHour(Heure_t++);//j'incremente Heure_t
grimwald 6:21be959149c3 164 rtc.SetSec(00);
grimwald 6:21be959149c3 165 jour_t=rtc.GetDay();
grimwald 6:21be959149c3 166 minute_t = rtc.GetMin();
grimwald 6:21be959149c3 167 rtc.SetMin(Minute_t);
grimwald 6:21be959149c3 168 rtc.SetHour(Heure_t);
grimwald 6:21be959149c3 169
grimwald 6:21be959149c3 170 LG=1;// j'allume verte pour l'incrementation
grimwald 6:21be959149c3 171 LR=0;
grimwald 6:21be959149c3 172
grimwald 6:21be959149c3 173 }//si j'appuie sur haut j'augmente les heures de 1
grimwald 6:21be959149c3 174
grimwald 6:21be959149c3 175 else if(entreeb) {
grimwald 6:21be959149c3 176 rtc.SetHour(Heure_t--);
grimwald 6:21be959149c3 177 rtc.SetSec(00);
grimwald 6:21be959149c3 178 jour_t=rtc.GetDay();
grimwald 6:21be959149c3 179 minute_t = rtc.GetMin();
grimwald 6:21be959149c3 180 rtc.SetHour(Heure_t);
grimwald 6:21be959149c3 181 rtc.SetMin(Minute_t);
grimwald 6:21be959149c3 182
grimwald 6:21be959149c3 183 LG=0;
grimwald 6:21be959149c3 184 LR=1;// j'allume rouge pour la diminution
grimwald 6:21be959149c3 185 }//si j'appuie en bas je diminue les heures de 1
grimwald 6:21be959149c3 186
grimwald 6:21be959149c3 187
grimwald 6:21be959149c3 188 if(entree)etat_futur=inter;
grimwald 6:21be959149c3 189 if (cpt_a == 1 && Heure_a == heure_t && Minute_a == minute_t && Seconde_a == seconde_t) {
grimwald 6:21be959149c3 190 pc.printf("bip bip");
grimwald 6:21be959149c3 191 etat_futur=bip;
grimwald 6:21be959149c3 192 }
grimwald 6:21be959149c3 193 if (cpt_m == 1 && Heure_m == 00 && Minute_m == 00 && Seconde_m == 00) {
grimwald 6:21be959149c3 194 pc.printf("bip bip");
grimwald 6:21be959149c3 195 etat_futur=bip2;
grimwald 4:86341306d9d7 196 }
grimwald 3:69c53ab43e4e 197 break;
grimwald 5:6ce20ff7927b 198
grimwald 5:6ce20ff7927b 199
grimwald 6:21be959149c3 200
grimwald 6:21be959149c3 201 case Calendrier:
grimwald 6:21be959149c3 202 rtc.SetDay(Jour_t);//j'incremente Jour_t
grimwald 6:21be959149c3 203
grimwald 6:21be959149c3 204
grimwald 6:21be959149c3 205 rtc.SetMon(Mois_t);
grimwald 6:21be959149c3 206
grimwald 6:21be959149c3 207 mois_t=rtc.GetMon();
grimwald 6:21be959149c3 208 jour_t=rtc.GetDay();
grimwald 6:21be959149c3 209
grimwald 6:21be959149c3 210 if(compteur==0) {
grimwald 6:21be959149c3 211 ihm.BAR_set(1);
grimwald 6:21be959149c3 212 if(entreeh) {
grimwald 6:21be959149c3 213 rtc.SetDay(Jour_t++);//j'incremente Jour_t
grimwald 6:21be959149c3 214
grimwald 6:21be959149c3 215
grimwald 6:21be959149c3 216 rtc.SetMon(Mois_t);
grimwald 6:21be959149c3 217
grimwald 6:21be959149c3 218 mois_t=rtc.GetMon();
grimwald 6:21be959149c3 219 jour_t=rtc.GetDay();
grimwald 6:21be959149c3 220
grimwald 6:21be959149c3 221 LG=1;// j'allume verte pour l'incrementation
grimwald 6:21be959149c3 222 LR=0;
grimwald 6:21be959149c3 223 } else if (entreeb) {
grimwald 6:21be959149c3 224 rtc.SetDay(Jour_t--);
grimwald 6:21be959149c3 225 jour_t=rtc.GetDay();
grimwald 6:21be959149c3 226 rtc.SetMon(Mois_t);
grimwald 6:21be959149c3 227 mois_t=rtc.GetMon();
grimwald 6:21be959149c3 228
grimwald 6:21be959149c3 229 LG=0;
grimwald 6:21be959149c3 230 LR=1;
grimwald 6:21be959149c3 231 }
grimwald 6:21be959149c3 232 } else if(compteur==1) {
grimwald 6:21be959149c3 233 ihm.BAR_set(2);
grimwald 6:21be959149c3 234 if(entreeh) {
grimwald 6:21be959149c3 235 rtc.SetMon(Mois_t++);
grimwald 6:21be959149c3 236
grimwald 6:21be959149c3 237 mois_t=rtc.GetMon();
grimwald 6:21be959149c3 238 jour_t=rtc.GetDay();
grimwald 6:21be959149c3 239 rtc.SetDay(Jour_t);
grimwald 6:21be959149c3 240
grimwald 6:21be959149c3 241
grimwald 6:21be959149c3 242
grimwald 6:21be959149c3 243 LG=1;
grimwald 6:21be959149c3 244 LR=0;
grimwald 6:21be959149c3 245 } else if (entreeb) {
grimwald 6:21be959149c3 246 rtc.SetMon(Mois_t--);
grimwald 6:21be959149c3 247
grimwald 6:21be959149c3 248 mois_t=rtc.GetMon();
grimwald 6:21be959149c3 249 rtc.SetDay(Jour_t);
grimwald 6:21be959149c3 250
grimwald 6:21be959149c3 251 jour_t=rtc.GetDay();
grimwald 6:21be959149c3 252
grimwald 6:21be959149c3 253
grimwald 6:21be959149c3 254 LG=0;
grimwald 6:21be959149c3 255 LR=1;
grimwald 6:21be959149c3 256 }
grimwald 6:21be959149c3 257 }//si j'appuie sur haut j'augmente les heures de 1
grimwald 6:21be959149c3 258 /** else if(compteur==2) {
grimwald 6:21be959149c3 259 ihm.BAR_set(4);
grimwald 6:21be959149c3 260 if(entreeh) {
grimwald 6:21be959149c3 261 rtc.SetYear(Annee_t++);//j'incremente Heure_t
grimwald 6:21be959149c3 262
grimwald 6:21be959149c3 263 annee_t=rtc.GetYear();
grimwald 6:21be959149c3 264
grimwald 6:21be959149c3 265
grimwald 6:21be959149c3 266
grimwald 6:21be959149c3 267 jour_t=rtc.GetDay();
grimwald 6:21be959149c3 268
grimwald 6:21be959149c3 269
grimwald 6:21be959149c3 270
grimwald 6:21be959149c3 271 mois_t=rtc.GetMon();
grimwald 6:21be959149c3 272 LG=1;// j'allume verte pour l'incrementation
grimwald 6:21be959149c3 273 LR=0;
grimwald 6:21be959149c3 274 }
grimwald 6:21be959149c3 275 if (entreeb) {
grimwald 6:21be959149c3 276 rtc.SetYear(Annee_t--);//j'incremente Heure_t
grimwald 6:21be959149c3 277
grimwald 6:21be959149c3 278 annee_t=rtc.GetYear();
grimwald 6:21be959149c3 279
grimwald 6:21be959149c3 280
grimwald 6:21be959149c3 281 jour_t=rtc.GetDay();
grimwald 6:21be959149c3 282
grimwald 6:21be959149c3 283
grimwald 6:21be959149c3 284
grimwald 6:21be959149c3 285 mois_t=rtc.GetMon();
grimwald 6:21be959149c3 286 LG=0;// j'allume verte pour l'incrementation
grimwald 6:21be959149c3 287 LR=1;
grimwald 6:21be959149c3 288 }
grimwald 6:21be959149c3 289 }
grimwald 6:21be959149c3 290 **/
grimwald 6:21be959149c3 291 //En fonction de l'appui sur droite ou gauche je change la valeur du compteur et certaine corresponde soit au jour , mois ou année
grimwald 6:21be959149c3 292 if(entreed) {
grimwald 6:21be959149c3 293 compteur++;
grimwald 6:21be959149c3 294
grimwald 6:21be959149c3 295 LG=1;// j'allume verte pour l'incrementation
grimwald 6:21be959149c3 296 LR=0;
grimwald 6:21be959149c3 297
grimwald 6:21be959149c3 298
grimwald 6:21be959149c3 299 }
grimwald 6:21be959149c3 300 if(entreeg) {
grimwald 6:21be959149c3 301 compteur--;
grimwald 6:21be959149c3 302
grimwald 6:21be959149c3 303 LG=0;
grimwald 6:21be959149c3 304 LR=1;
grimwald 6:21be959149c3 305
grimwald 6:21be959149c3 306 }
grimwald 6:21be959149c3 307
grimwald 6:21be959149c3 308
grimwald 6:21be959149c3 309
grimwald 6:21be959149c3 310
grimwald 6:21be959149c3 311 if(compteur > 2 or compteur<0) {
grimwald 6:21be959149c3 312 compteur=0;
grimwald 6:21be959149c3 313 }
grimwald 6:21be959149c3 314 if(entree)etat_futur=inter;
grimwald 6:21be959149c3 315 if (cpt_a == 1 && Heure_a == heure_t && Minute_a == minute_t && Seconde_a == seconde_t) {
grimwald 6:21be959149c3 316 pc.printf("bip bip");
grimwald 6:21be959149c3 317 etat_futur=bip;
grimwald 6:21be959149c3 318 }
grimwald 6:21be959149c3 319 if (cpt_m == 1 && Heure_m == 00 && Minute_m == 00 && Seconde_m == 00) {
grimwald 6:21be959149c3 320 pc.printf("bip bip");
grimwald 6:21be959149c3 321 etat_futur=bip2;
grimwald 6:21be959149c3 322 }
grimwald 6:21be959149c3 323
grimwald 4:86341306d9d7 324 break;
grimwald 6:21be959149c3 325 case inter:
grimwald 6:21be959149c3 326 if(entree)etat_futur=inter;
grimwald 6:21be959149c3 327 if(!entree)etat_futur=Menu; // test pour avoir un ecran eteint quand on reste appuyé au retour au menu
grimwald 2:29559ef1623d 328 break;
grimwald 4:86341306d9d7 329
grimwald 6:21be959149c3 330 case Alarme:
grimwald 6:21be959149c3 331 heure_t = rtc.GetHour();
grimwald 6:21be959149c3 332 minute_t = rtc.GetMin();//J'utilise les valeurs qui ont été etablie avant et je les met dans des variables
grimwald 6:21be959149c3 333
grimwald 6:21be959149c3 334
grimwald 6:21be959149c3 335 //pc.printf("%d\n",cpt_a);
grimwald 6:21be959149c3 336 // en fonction de la valeur de choix_a on va selectionner soit les heure , minute ou seconde et avec la possibiliés de les modifier
grimwald 6:21be959149c3 337 if (entreed) {
grimwald 6:21be959149c3 338 choix_a++;
grimwald 6:21be959149c3 339 }
grimwald 6:21be959149c3 340 if (choix_a == 0) {
grimwald 6:21be959149c3 341 LG=1;
grimwald 6:21be959149c3 342 LR=0;
grimwald 6:21be959149c3 343 if(entreeh) {
grimwald 6:21be959149c3 344 Heure_a++;
grimwald 6:21be959149c3 345 } else if(entreeb) {
grimwald 6:21be959149c3 346 Heure_a--;
grimwald 6:21be959149c3 347 }
grimwald 6:21be959149c3 348 }
grimwald 4:86341306d9d7 349
grimwald 6:21be959149c3 350 else if (choix_a == 1) {
grimwald 6:21be959149c3 351 LG=0;
grimwald 6:21be959149c3 352 LR=1;
grimwald 6:21be959149c3 353 if(entreeh) {
grimwald 6:21be959149c3 354 Minute_a++;
grimwald 6:21be959149c3 355 } else if(entreeb) {
grimwald 6:21be959149c3 356 Minute_a--;
grimwald 6:21be959149c3 357 }
grimwald 6:21be959149c3 358 } else if (choix_a == 2) {
grimwald 6:21be959149c3 359 LG=0;
grimwald 6:21be959149c3 360 LR=0;
grimwald 6:21be959149c3 361 if(entreeh) {
grimwald 6:21be959149c3 362 Seconde_a++;
grimwald 6:21be959149c3 363 } else if(entreeb) {
grimwald 6:21be959149c3 364 Seconde_a--;
grimwald 6:21be959149c3 365 }
grimwald 6:21be959149c3 366 }
grimwald 6:21be959149c3 367
grimwald 6:21be959149c3 368 // en appuyant sur gauche on met l'alarme soit sur off ou on
grimwald 6:21be959149c3 369 if (entreeg) {
grimwald 6:21be959149c3 370 cpt_a++;
grimwald 6:21be959149c3 371 }
grimwald 6:21be959149c3 372 if (cpt_a==0) {
grimwald 6:21be959149c3 373 //OFF
grimwald 6:21be959149c3 374 ihm.BAR_set(1);
grimwald 6:21be959149c3 375
grimwald 6:21be959149c3 376 }
grimwald 6:21be959149c3 377
grimwald 6:21be959149c3 378 else if (cpt_a==1) {
grimwald 6:21be959149c3 379 //ON
grimwald 6:21be959149c3 380 ihm.BAR_set(2);
grimwald 6:21be959149c3 381
grimwald 6:21be959149c3 382 }
grimwald 6:21be959149c3 383 // si l'alarme est ON est que le temps voulu correspond au temps actuel l'alarme sonne
grimwald 6:21be959149c3 384 if (cpt_a == 1 && Heure_a == heure_t && Minute_a == minute_t && Seconde_a == seconde_t) {
grimwald 6:21be959149c3 385 pc.printf("bip bip");
grimwald 6:21be959149c3 386 etat_futur=bip;
grimwald 6:21be959149c3 387 }
grimwald 6:21be959149c3 388 if (cpt_m == 1 && Heure_m == 00 && Minute_m == 00 && Seconde_m == 00) {
grimwald 6:21be959149c3 389 pc.printf("bip bip");
grimwald 6:21be959149c3 390 etat_futur=bip2;
grimwald 6:21be959149c3 391 }
grimwald 4:86341306d9d7 392
grimwald 4:86341306d9d7 393
grimwald 6:21be959149c3 394 // pour definir le temps
grimwald 6:21be959149c3 395 if (Heure_a > 23 or Heure_a < 00) {
grimwald 6:21be959149c3 396 Heure_a = 00;
grimwald 6:21be959149c3 397 }
grimwald 6:21be959149c3 398 if (Minute_a > 59 or Minute_a < 00) {
grimwald 6:21be959149c3 399 Minute_a = 00;
grimwald 6:21be959149c3 400 }
grimwald 6:21be959149c3 401 if (Seconde_a > 59 or Seconde_a < 00) {
grimwald 6:21be959149c3 402 Seconde_a = 00;
grimwald 6:21be959149c3 403 }
grimwald 6:21be959149c3 404 if (choix_a >2 or choix_a<0) {
grimwald 6:21be959149c3 405 choix_a = 0;
grimwald 6:21be959149c3 406 }
grimwald 6:21be959149c3 407 if (cpt_a >1 or cpt_a<0) {
grimwald 6:21be959149c3 408 cpt_a = 0;
grimwald 6:21be959149c3 409 }
grimwald 6:21be959149c3 410
grimwald 6:21be959149c3 411 if(entree)etat_futur=inter;
grimwald 6:21be959149c3 412 break;
grimwald 6:21be959149c3 413 // deux alarme
grimwald 6:21be959149c3 414 case bip :
grimwald 6:21be959149c3 415 if (entree) {
grimwald 6:21be959149c3 416 cpt_a=0;
grimwald 6:21be959149c3 417 etat_futur=Menu;
grimwald 6:21be959149c3 418 }
grimwald 6:21be959149c3 419 break;
grimwald 6:21be959149c3 420 case bip2 :
grimwald 6:21be959149c3 421 if (entree) {
grimwald 6:21be959149c3 422 cpt_m=0;
grimwald 6:21be959149c3 423 etat_futur=Menu;
grimwald 6:21be959149c3 424 }
grimwald 6:21be959149c3 425 break;
grimwald 6:21be959149c3 426 case Minuteur :
grimwald 6:21be959149c3 427
grimwald 6:21be959149c3 428 // meme fonctionnement que l'alarme ici on regle le temps souhaite et on le met sur on ce qui va faire que le décompte va commence
grimwald 6:21be959149c3 429 if (entreed) {
grimwald 6:21be959149c3 430 choix_m++;
grimwald 6:21be959149c3 431 }
grimwald 6:21be959149c3 432 if (choix_m == 0) {
grimwald 6:21be959149c3 433 LG=1;
grimwald 6:21be959149c3 434 LR=0;
grimwald 6:21be959149c3 435 if(entreeh) {
grimwald 6:21be959149c3 436 Heure_m++;
grimwald 6:21be959149c3 437 } else if(entreeb) {
grimwald 6:21be959149c3 438 Heure_m--;
grimwald 6:21be959149c3 439 }
grimwald 6:21be959149c3 440 }
grimwald 6:21be959149c3 441
grimwald 6:21be959149c3 442 else if (choix_m == 1) {
grimwald 6:21be959149c3 443 LG=0;
grimwald 6:21be959149c3 444 LR=1;
grimwald 6:21be959149c3 445 if(entreeh) {
grimwald 6:21be959149c3 446 Minute_m++;
grimwald 6:21be959149c3 447 } else if(entreeb) {
grimwald 6:21be959149c3 448 Minute_m--;
grimwald 6:21be959149c3 449 }
grimwald 6:21be959149c3 450 } else if (choix_m == 2) {
grimwald 6:21be959149c3 451 LG=0;
grimwald 6:21be959149c3 452 LR=0;
grimwald 6:21be959149c3 453 if(entreeh) {
grimwald 6:21be959149c3 454 Seconde_m++;
grimwald 6:21be959149c3 455 } else if(entreeb) {
grimwald 6:21be959149c3 456 Seconde_m--;
grimwald 6:21be959149c3 457 }
grimwald 6:21be959149c3 458 }
grimwald 6:21be959149c3 459
grimwald 6:21be959149c3 460
grimwald 6:21be959149c3 461 if (entreeg) {
grimwald 6:21be959149c3 462 cpt_m++;
grimwald 6:21be959149c3 463 }
grimwald 6:21be959149c3 464 if (cpt_m==0) {
grimwald 6:21be959149c3 465 //OFF
grimwald 6:21be959149c3 466 ihm.BAR_set(1);
grimwald 6:21be959149c3 467
grimwald 6:21be959149c3 468 tempsS.reset();
grimwald 6:21be959149c3 469
grimwald 6:21be959149c3 470 }
grimwald 6:21be959149c3 471
grimwald 6:21be959149c3 472 else if (cpt_m==1) {
grimwald 6:21be959149c3 473 //ON
grimwald 6:21be959149c3 474 ihm.BAR_set(2);
grimwald 6:21be959149c3 475
grimwald 6:21be959149c3 476 tempsS.start();
grimwald 6:21be959149c3 477
grimwald 6:21be959149c3 478 }
grimwald 6:21be959149c3 479 // si le minuteur est sur on est que le decompte arrive a 0 alors l'alarme se declenche
grimwald 6:21be959149c3 480 if (cpt_m == 1 && Heure_m == 00 && Minute_m == 00 && Seconde_m == 00) {
grimwald 6:21be959149c3 481 pc.printf("bip bip");
grimwald 6:21be959149c3 482 etat_futur=bip2;
grimwald 6:21be959149c3 483 }
grimwald 6:21be959149c3 484 if (cpt_a == 1 && Heure_a == heure_t && Minute_a == minute_t && Seconde_a == seconde_t) {
grimwald 6:21be959149c3 485 pc.printf("bip bip");
grimwald 6:21be959149c3 486 etat_futur=bip;
grimwald 6:21be959149c3 487 }
grimwald 6:21be959149c3 488
grimwald 6:21be959149c3 489
grimwald 6:21be959149c3 490
grimwald 6:21be959149c3 491 if (Heure_m > 23 or Heure_m < 00) {
grimwald 6:21be959149c3 492 Heure_m = 00;
grimwald 6:21be959149c3 493 }
grimwald 6:21be959149c3 494 if (Minute_m > 59 or Minute_m < 00) {
grimwald 6:21be959149c3 495 Minute_m = 00;
grimwald 6:21be959149c3 496 }
grimwald 6:21be959149c3 497 if (Seconde_m > 59 or Seconde_m < 00) {
grimwald 6:21be959149c3 498 Seconde_m = 00;
grimwald 6:21be959149c3 499 }
grimwald 6:21be959149c3 500 if (choix_m >2 or choix_m<0) {
grimwald 6:21be959149c3 501 choix_m = 0;
grimwald 6:21be959149c3 502 }
grimwald 6:21be959149c3 503 if (cpt_m >1 or cpt_m<0) {
grimwald 6:21be959149c3 504 cpt_m = 0;
grimwald 6:21be959149c3 505 }
grimwald 6:21be959149c3 506
grimwald 6:21be959149c3 507 // partie ou le prog gere la gestion du decompte en fonction d'un chrono interne
grimwald 6:21be959149c3 508 if(tempsS.read() >=1) {
grimwald 6:21be959149c3 509 Seconde_m--;
grimwald 6:21be959149c3 510 tempsS.reset();
grimwald 6:21be959149c3 511 }
grimwald 6:21be959149c3 512 if (cpt_m == 1 && Minute_m>00 && Seconde_m < 00) {
grimwald 6:21be959149c3 513 Minute_m--;
grimwald 6:21be959149c3 514 Seconde_m = 59;
grimwald 6:21be959149c3 515
grimwald 6:21be959149c3 516
grimwald 6:21be959149c3 517 }
grimwald 6:21be959149c3 518 if (cpt_m == 1 && Heure_m>00 && Minute_m == 00 && Seconde_m < 00 ) {
grimwald 6:21be959149c3 519 Heure_m--;
grimwald 6:21be959149c3 520 Minute_m = 59;
grimwald 6:21be959149c3 521 Seconde_m = 59;
grimwald 6:21be959149c3 522
grimwald 6:21be959149c3 523
grimwald 6:21be959149c3 524
grimwald 6:21be959149c3 525 }
grimwald 6:21be959149c3 526
grimwald 6:21be959149c3 527
grimwald 6:21be959149c3 528 if(entree)etat_futur=inter;
grimwald 6:21be959149c3 529 break;
grimwald 4:86341306d9d7 530
grimwald 4:86341306d9d7 531
grimwald 2:29559ef1623d 532 }
grimwald 2:29559ef1623d 533 // valeurs des sorties en fonction de l'état actuel
grimwald 2:29559ef1623d 534 switch(etat_actuel) {
grimwald 4:86341306d9d7 535
grimwald 4:86341306d9d7 536
grimwald 6:21be959149c3 537 // a chaque etat je reprend l'information sur le temps pour l'avoir toujours a jour
grimwald 6:21be959149c3 538 case Horloge :
grimwald 6:21be959149c3 539 pc.printf("%02u:%02u:%02u\n",heure_t,minute_t,seconde_t);//debug
grimwald 6:21be959149c3 540 pc.printf("%02u:%02u:%02u\n",Heure_a,Minute_a,Seconde_a);
grimwald 6:21be959149c3 541 pc.printf("%d\n",cpt_a);
grimwald 6:21be959149c3 542 ihm.BAR_set(0);
grimwald 6:21be959149c3 543 heure_t = rtc.GetHour();
grimwald 6:21be959149c3 544 minute_t = rtc.GetMin();//J'utilise les valeurs qui ont été etablie avant et je les met dans des variables
grimwald 6:21be959149c3 545 seconde_t = rtc.GetSec();
grimwald 4:86341306d9d7 546
grimwald 6:21be959149c3 547 jour_t=rtc.GetDay();
grimwald 6:21be959149c3 548 mois_t=rtc.GetMon();
grimwald 6:21be959149c3 549 annee_t=rtc.GetYear();
grimwald 6:21be959149c3 550 ihm.LCD_printf("%02u:%02u:%02u",heure_t,minute_t,seconde_t);
grimwald 6:21be959149c3 551 LG=0;// je met les leds a 0 pour un effet de clignotement
grimwald 6:21be959149c3 552 LR=0;
grimwald 6:21be959149c3 553 break;
grimwald 6:21be959149c3 554
grimwald 6:21be959149c3 555 case Calendrier:
grimwald 6:21be959149c3 556 pc.printf("%02u:%02u:%02u\n",heure_t,minute_t,seconde_t);//debug
grimwald 6:21be959149c3 557 pc.printf("%02u:%02u:%02u\n",Heure_a,Minute_a,Seconde_a);
grimwald 6:21be959149c3 558 pc.printf("%d\n",cpt_a);
grimwald 6:21be959149c3 559
grimwald 6:21be959149c3 560 jour_t=rtc.GetDay();
grimwald 6:21be959149c3 561 mois_t=rtc.GetMon();
grimwald 6:21be959149c3 562 annee_t=rtc.GetYear();
grimwald 6:21be959149c3 563
grimwald 6:21be959149c3 564 heure_t = rtc.GetHour();
grimwald 6:21be959149c3 565 minute_t = rtc.GetMin();//J'utilise les valeurs qui ont été etablie avant et je les met dans des variables
grimwald 6:21be959149c3 566 seconde_t = rtc.GetSec();
grimwald 6:21be959149c3 567
grimwald 6:21be959149c3 568 ihm.LCD_printf("%d:%d:%d",jour_t,mois_t);
grimwald 6:21be959149c3 569 pc.printf("%d\n",annee_t);
grimwald 6:21be959149c3 570 LG=0;// je met les leds a 0 pour un effet de clignotement
grimwald 6:21be959149c3 571 LR=0;
grimwald 6:21be959149c3 572 break;
grimwald 6:21be959149c3 573 case Menu:
grimwald 6:21be959149c3 574 pc.printf("%02u:%02u:%02u\n",heure_t,minute_t,seconde_t);
grimwald 6:21be959149c3 575 pc.printf("%02u:%02u:%02u\n",Heure_a,Minute_a,Seconde_a);//debug
grimwald 6:21be959149c3 576 pc.printf("%d\n",cpt_a);
grimwald 6:21be959149c3 577
grimwald 2:29559ef1623d 578 ihm.BAR_set(0);
grimwald 6:21be959149c3 579 heure_t = rtc.GetHour();
grimwald 5:6ce20ff7927b 580 minute_t = rtc.GetMin();//J'utilise les valeurs qui ont été etablie avant et je les met dans des variables
grimwald 5:6ce20ff7927b 581 seconde_t = rtc.GetSec();
grimwald 6:21be959149c3 582
grimwald 6:21be959149c3 583 jour_t=rtc.GetDay();
grimwald 6:21be959149c3 584 mois_t=rtc.GetMon();
grimwald 6:21be959149c3 585 annee_t=rtc.GetYear();
grimwald 6:21be959149c3 586 break;
grimwald 6:21be959149c3 587 case Alarme:
grimwald 6:21be959149c3 588 pc.printf("%02u:%02u:%02u\n",heure_t,minute_t,seconde_t);//debug
grimwald 6:21be959149c3 589 pc.printf("%02u:%02u:%02u\n",Heure_a,Minute_a,Seconde_a);
grimwald 6:21be959149c3 590 pc.printf("%d\n",cpt_a);
grimwald 6:21be959149c3 591
grimwald 6:21be959149c3 592
grimwald 6:21be959149c3 593 ihm.LCD_printf("%02u:%02u:%02u",Heure_a,Minute_a,Seconde_a);
grimwald 6:21be959149c3 594 break;
grimwald 6:21be959149c3 595
grimwald 6:21be959149c3 596 case inter:
grimwald 6:21be959149c3 597 ihm.LCD_clear();
grimwald 6:21be959149c3 598 break;
grimwald 6:21be959149c3 599 case bip:
grimwald 6:21be959149c3 600 pc.printf("%02u:%02u:%02u\n",heure_t,minute_t,seconde_t);//debug
grimwald 6:21be959149c3 601 pc.printf("%02u:%02u:%02u\n",Heure_a,Minute_a,Seconde_a);
grimwald 4:86341306d9d7 602 LR=0;
grimwald 6:21be959149c3 603 LG=0;
grimwald 6:21be959149c3 604 tempo1.start();
grimwald 6:21be959149c3 605 tempo2.start();
grimwald 6:21be959149c3 606
grimwald 6:21be959149c3 607 //je cree un clignotement pour simuler ue alarme et je precise quelle alarme
grimwald 6:21be959149c3 608
grimwald 6:21be959149c3 609 if(tempo1.read_ms()>500) {
grimwald 6:21be959149c3 610 LR=!LR;
grimwald 6:21be959149c3 611 ihm.LCD_printf("BIPALA");
grimwald 6:21be959149c3 612 tempo1.reset();
grimwald 6:21be959149c3 613 }
grimwald 6:21be959149c3 614 if(tempo2.read_ms()>500) {
grimwald 6:21be959149c3 615 LG=!LG;
grimwald 6:21be959149c3 616 ihm.LCD_printf("BIPALA");
grimwald 6:21be959149c3 617 tempo2.reset();
grimwald 6:21be959149c3 618 }
grimwald 6:21be959149c3 619 break;
grimwald 6:21be959149c3 620 case bip2:
grimwald 6:21be959149c3 621 pc.printf("%02u:%02u:%02u\n",heure_t,minute_t,seconde_t);
grimwald 6:21be959149c3 622 pc.printf("%02u:%02u:%02u\n",Heure_a,Minute_a,Seconde_a);
grimwald 6:21be959149c3 623 LR=0;
grimwald 6:21be959149c3 624 LG=0;
grimwald 6:21be959149c3 625 tempo3.start();
grimwald 6:21be959149c3 626 tempo4.start();
grimwald 6:21be959149c3 627 //je cree un clignotement pour simuler ue alarme et je precise quelle alarme
grimwald 6:21be959149c3 628
grimwald 6:21be959149c3 629 if(tempo3.read_ms()>500) {
grimwald 6:21be959149c3 630 LR=!LR;
grimwald 6:21be959149c3 631 ihm.LCD_printf("BIPMIN");
grimwald 6:21be959149c3 632 tempo3.reset();
grimwald 6:21be959149c3 633 }
grimwald 6:21be959149c3 634 if(tempo4.read_ms()>500) {
grimwald 6:21be959149c3 635 LG=!LG;
grimwald 6:21be959149c3 636 ihm.LCD_printf("BIPMIN");
grimwald 6:21be959149c3 637 tempo4.reset();
grimwald 6:21be959149c3 638 }
grimwald 6:21be959149c3 639 break;
grimwald 6:21be959149c3 640 case Minuteur :
grimwald 6:21be959149c3 641 ihm.LCD_printf("%02u:%02u:%02u",Heure_m,Minute_m,Seconde_m);
grimwald 6:21be959149c3 642
grimwald 6:21be959149c3 643 pc.printf("S=%02f\n\r",tempsS.read());
grimwald 5:6ce20ff7927b 644
grimwald 2:29559ef1623d 645 break;
grimwald 4:86341306d9d7 646
grimwald 4:86341306d9d7 647
grimwald 2:29559ef1623d 648 }
grimwald 2:29559ef1623d 649 }