Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: ihm_L476_full RTC_IUT
Revision 4:86341306d9d7, committed 2020-06-17
- Comitter:
- grimwald
- Date:
- Wed Jun 17 21:34:59 2020 +0000
- Parent:
- 3:69c53ab43e4e
- Child:
- 5:6ce20ff7927b
- Commit message:
- Horloge;
Changed in this revision
| RTC_IUT.lib | Show annotated file Show diff for this revision Revisions of this file |
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/RTC_IUT.lib Wed Jun 17 21:34:59 2020 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/teams/SNE-S1S2-prime/code/RTC_IUT/#25fccea872c4
--- a/main.cpp Mon Jun 01 19:34:43 2020 +0000
+++ b/main.cpp Wed Jun 17 21:34:59 2020 +0000
@@ -1,21 +1,34 @@
+#include "RTC_IUT.h"//bibliotheque de l'afficheur
+#include "ihm_L476.h"//bibliotheque du chrono
+//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
+DigitalIn BPD (PA_5,PullDown) ;//down
+DigitalOut LG (PE_8) ; // led verte
+DigitalOut LR (PB_2) ; // led rouge
-#include "ihm_L476.h"
-DigitalIn BPC (PA_0,PullNone) ; // bouton centre
-DigitalIn BPB (PA_1,PullDown) ;//bouton down
-IHM_L476 ihm;//bibliotheque de l'afficheur
-Timer temps; //bibliotheque du chrono
+IHM_L476 ihm; // on chosis des noms qui nous serviront a appelé les fonctions dans les bibliotheque
+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
+static unsigned char Heure_t=23,Minute_t=59,Seconde_t = 50; // on defini l'heure avec une unsigned char
+
void automate(void);
-//
+
int main()
{
-
- ihm.LCD_printf("CHRONO");
+ rtc.SetHour(Heure_t);
+ rtc.SetMin(Minute_t);// On initialise l'heure , les minutes et les secondes
+ rtc.SetSec(Seconde_t);
+ rtc.SetYear(2020);
+ ihm.LCD_printf("CLOCK");
// début de l'application
while(1) {
+ wait(0.1);
automate(); // ce qui se produit sur top de clock
}
}
@@ -25,77 +38,122 @@
{
// définition d'un type énuméré permettant de manipuler l'état de l'automate
// par son nom
- typedef enum {etat0=0,affichage=1, start=2, stop=3,lap=4,reset=5} type_etat;
- type_etat etat_actuel = etat0 ; // déclaration état actuel init. à etat0
- static type_etat etat_futur = etat0; // déclaration état futur
- int entree;
- int entreeb;
- static int minute;
-
+ typedef enum {affichage=0, Minutep =1, Minutem =2, Heurep = 3,Heurem =4} 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;
+
// gestion des entrees
- entree = BPC;// c'est le bouton centre
- entreeb = BPB;// c'est le bouton bas
+ //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
-
+
+
switch(etat_actuel) {
//les différents états en accord avec le diagramme de transition
- case etat0 :
- if (entreeb) etat_futur = reset;
- if (entree) etat_futur = start;
- break;
-
- case start :
- temps.start();//pour demarrer le chrono
- if (!entree) etat_futur = affichage;
- break;
-
- case stop :
- temps.stop();//pour stop le chrono
- if (!entree) etat_futur = etat0;
- break;
-
- case reset :
- temps.reset();// pour reset le chrono
- if (!entreeb) etat_futur = etat0;
- break;
-
- case lap :
- if (entreeb) etat_futur = affichage;
+
+
+ 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(entreeb)etat_futur=Heurem;//si j'appuie en bas je diminue les heures de 1
+
+ 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
+ Seconde_t = 00;
+ rtc.SetMin(Minute_t++);
+ }
break;
- case affichage :
- if (entreeb) etat_futur = lap;
- if (entree) etat_futur = stop;
+
+ case Minutep:
+ 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;
+ case Minutem:
+ rtc.SetMin(Minute_t--);//je diminue Minute_t
+ rtc.SetSec(00);
+ etat_futur = affichage;
break;
-
+
+ case Heurep:
+ rtc.SetHour(Heure_t++);//j'incremente Heure_t
+ rtc.SetSec(00);
+ etat_futur = affichage;
+ break;
+
+ case Heurem:
+ rtc.SetHour(Heure_t--);
+ rtc.SetSec(00);
+ etat_futur = affichage;
+ break;
+
+
+
+
}
// valeurs des sorties en fonction de l'état actuel
switch(etat_actuel) {
-
- case etat0 :
+
+
+
+ case affichage :
ihm.BAR_set(0);
- ihm.LCD_printf("%02d:%05.2f",minute,temps.read()); //ihm.LCD_printf("%02d:%02d:%02d",temps.read_ms()) on peut utiliser une autre facon pour affiche le temps; //affiche le temps a zero
+ 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
+ LR=0;
+
break;
- case affichage :
- if(temps.read()>59.99){
- temps.reset(); // je reset les seconde a 0 et je rajoute une minute car 60s = 1 min //on peut faire autrement
- minute = minute +1;
- }
+
+
+
+ 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
+ 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
+ LR=1;
+ break;
+ case Heurep :
ihm.BAR_set(1);//debug de l'état
- ihm.LCD_printf("%02d:%05.2f",minute,temps.read()); // affichage mis a jour du temps // affichage sur l'écran LCD
- break;
- case start :
- ihm.BAR_set(2);//debug de l'état
- ihm.LCD_printf("%02d:%05.2f",minute,temps.read()); // affichage sur l'écran LCD
+ 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;
break;
- case stop :
- ihm.BAR_set(4);
- ihm.LCD_printf("%02d:%05.2f",minute,temps.read()); //affiche le temps figé pendant que le temps continue
+
+ case Heurem :
+ ihm.BAR_set(1);
+ ihm.LCD_printf("%02d:%02d:%02d",Heure_t,Minute_t,seconde_t);
+ LG=0;
+ LR=1;// j'allume rouge pour la diminution
break;
- case lap :
- ihm.BAR_set(8);
- break;
+
+
+
}
}
\ No newline at end of file