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 2:29559ef1623d, committed 2020-05-24
- Comitter:
- grimwald
- Date:
- Sun May 24 14:42:33 2020 +0000
- Parent:
- 1:1e5f482dad5b
- Child:
- 3:69c53ab43e4e
- Commit message:
- chrono;
Changed in this revision
| ihm_L476_full.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/ihm_L476_full.lib Sun May 24 14:42:33 2020 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/teams/IUT-CACHAN-GE1/code/ihm_L476_full/#e9777c284d79
--- a/main.cpp Tue May 19 20:00:04 2020 +0000
+++ b/main.cpp Sun May 24 14:42:33 2020 +0000
@@ -1,22 +1,102 @@
-#include "mbed.h"
-DigitalOut ledR(PB_2);
-DigitalOut ledG(PE_8);
+
+#include "ihm_L476.h"
+Serial pc(SERIAL_TX, SERIAL_RX);//liason série
+DigitalIn BPC (PA_0,PullNone) ; // bouton centre
+DigitalIn BPB (PA_1,PullDown) ;//bouton down
+DigitalOut LG (PE_8) ; // led verte
+DigitalOut LR (PB_2) ; // led rouge
+
+IHM_L476 ihm;//bibliotheque de l'afficheur
+Timer temps,temps2; //bibliotheque du chrono
+
+// prototype et variables globales et constantes
+void automate(void);
+//
+
+
int main()
{
- unsigned short compteur1=0,compteur2=0;
- ledR=0;
- ledG=0;
- while (true) {
- wait_ms(1);
- compteur1++;
- compteur2++ ;
- if(compteur1>500) {
- ledR=!ledR;
- compteur1=0 ;
- }
- if(compteur2>1500) {
- ledG=!ledG;
- compteur2=0 ;
- }
+
+ ihm.LCD_printf("CHRONO");
+ // début de l'application
+ while(1) {
+ wait(0.2); //c'est la clock (5 Hz)
+ automate(); // ce qui se produit sur top de clock
}
}
+
+
+void automate(void)
+{
+ // définition d'un type énuméré permettant de manipuler l'état de l'automate
+ // par son nom
+ typedef enum {etat0=0, start=1, stop=2,reset=3,lap=4} type_etat;
+ type_etat etat_actuel = etat0 ; // déclaration état actuel init. à etat0
+ static type_etat etat_futur = etat0; // déclaration état futur
+ static int minute = 0; // declaration de minute en static pour que la valeur ne soit pas réinitialiser
+ int entree;
+ int entreeb;
+
+ // gestion des entrees
+ entree = BPC;// c'est le bouton centre
+ entreeb = BPB;// c'est le bouton bas
+ // 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) {
+ case etat0 :
+ minute = 0; //pour reset
+ temps.reset();//pour reset
+ if (entree) etat_futur = start;
+ break;
+ case start :
+ temps.start();//pour demarrer le chrono
+ temps2=temps;//le temps2 recopie le temps de base
+ if (entree) etat_futur = stop;
+ if (entreeb) etat_futur = lap;
+ break;
+ case stop :
+ temps.stop();
+ if (entree) etat_futur = start;
+ if (entreeb) etat_futur = reset; //si j'appui sur le bouton down quand le chrono est stoppé il se reset
+ break;
+ case reset :
+ etat_futur = etat0;
+ break;
+ case lap :
+ temps2.stop();//le temps 2 se met en pause (qui est la copie du temps de base)pendant que le temps de base continue
+ if (entreeb) etat_futur = start;
+ break;
+
+ }
+ // valeurs des sorties en fonction de l'état actuel
+ switch(etat_actuel) {
+
+ case etat0 :
+ ihm.BAR_set(0);
+ ihm.LCD_printf("%02d.%05.2f",minute,temps.read());//affiche le temps a zero
+ pc.printf("%02d.%05.2f\r\n",minute,temps.read())
+ break;
+ case start :
+ if(temps.read()>59.99){
+ temps.reset(); // je reset les seconde a 0 et je rajoute une minute car 60s = 1 min
+ minute = minute +1;
+ }
+
+ 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
+ pc.printf("%02d.%05.2f \r\n",minute,temps.read()); // affichage sur pc
+ break;
+ case stop :
+ ihm.BAR_set(2);//debug de l'état
+ ihm.LCD_printf("%02d.%05.2f",minute,temps.read()); // affichage sur l'écran LCD
+ pc.printf("%02d.%05.2f\r\n",minute,temps.read()); // affichage du temps en pause // affichage sur pc
+ break;
+ case lap :
+ ihm.BAR_set(4);
+ ihm.LCD_printf("%02d.%05.2f",minute,temps2.read()); //affiche le temps figé pendant que le temps continue
+ pc.printf("%02d.%05.2f\r\n",minute,temps2.read())
+ break;
+
+ }
+}
\ No newline at end of file