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.
main.cpp
00001 /////////////////////////////////////////////////////////////////////////////////// 00002 // Machine A Etats (MAE) - Gestion d'un chronometre 00003 // Cible : MBED LPC1768 00004 // Langage C 00005 // 00006 // PhC OK le 02-03-2020 00007 /////////////////////////////////////////////////////////////////////////////////// 00008 // INCLUDES 00009 #include "mbed.h" 00010 #include "TextLCD.h" 00011 00012 // DEFINES 00013 // Definition des constantes etats 00014 #define STOP 0 00015 #define RUN 1 00016 #define LAP 2 00017 00018 00019 // Constantes generales 00020 #define LCD_SIZE 20 // la taille de l'afficheur LCD 00021 00022 00023 // PROTOTYPES 00024 void Init(void) ; 00025 void A01(),A02(),A03(),A04(),A05(),A06(),A08(); 00026 void affiche (); 00027 void gestion(); 00028 00029 00030 // OBJETS 00031 DigitalIn BPMS(p12); 00032 DigitalIn BPLR(p11); 00033 Timer T1; 00034 TextLCD MyLCD(p26,p25,p21,p22,p23,p24,TextLCD:: LCD20x4); 00035 00036 00037 // GLOBALS 00038 // Variable d'etat 00039 int iEtat, iMs_avant=0, iLr_avant=0,iLap=0; 00040 00041 00042 // Variables de gestion Heure, Minute, Seconde, Dixieme 00043 unsigned char byH, byM,byS, byD; 00044 00045 00046 // MAIN 00047 int main() 00048 { 00049 // printf("\n\rDemarrage du programme\n\r") ; 00050 int iMs=0, iLr=0; 00051 Init() ; 00052 00053 00054 while(true) { 00055 iMs=BPMS.read(); 00056 iLr=BPLR.read(); 00057 switch(iEtat) { 00058 case STOP: 00059 if(iMs>iMs_avant) { 00060 // printf("Evenement=MS\n\r"); 00061 A01(); 00062 //printf("Etat=RUN\n\r"); 00063 iEtat=RUN; 00064 // wait(0.2); 00065 break; 00066 } 00067 if(iLr>iLr_avant) { 00068 // printf("Evenement=LR\n\r"); 00069 A08(); 00070 // printf("Etat=STOP\n\r"); 00071 iEtat=STOP; 00072 // wait(0.2); 00073 break; 00074 } 00075 break; 00076 00077 case RUN: 00078 if(iMs>iMs_avant) { 00079 //printf("Evenement=MS\n\r"); 00080 A02(); 00081 //printf("Etat=STOP\n\r"); 00082 iEtat=STOP; 00083 //wait(0.2); 00084 break; 00085 } 00086 if(iLr>iLr_avant) { 00087 //printf("Evenement=LR\n\r"); 00088 A04(); 00089 //printf("Etat=LAP\n\r"); 00090 iEtat=LAP; 00091 //wait(0.2); 00092 break; 00093 } 00094 if(T1.read_ms()>=10) { 00095 //printf("Evenement=TIME\n\r"); 00096 A03(); 00097 //printf("Etat=RUN\n\r"); 00098 iEtat=RUN; 00099 break; 00100 } 00101 break; 00102 case LAP: 00103 if(iMs>iMs_avant) { 00104 //printf("Evenement=MS\n\r"); 00105 A02(); 00106 //printf("Etat=STOP\n\r"); 00107 iEtat=STOP; 00108 00109 break; 00110 } 00111 if(iLr>iLr_avant) { 00112 //printf("Evenement=LR\n\r"); 00113 A05(); 00114 //printf("Etat=RUN\n\r"); 00115 iEtat=RUN; 00116 break; 00117 } 00118 if(T1.read_ms()>=10) { 00119 //printf("Evenement=TIME\n\r"); 00120 A06(); 00121 //printf("Etat=LAP\n\r"); 00122 iEtat=LAP; 00123 break; 00124 } 00125 break; 00126 } 00127 00128 00129 00130 } // end while 00131 } // end main 00132 00133 00134 00135 00136 /////////////////////////// 00137 // Les actions elementaires 00138 /////////////////////////// 00139 void Init(void) 00140 { 00141 BPMS.mode(PullDown); 00142 BPLR.mode(PullDown); 00143 // Etat initial 00144 iEtat = STOP ; 00145 // printf("Etat initial = STOP\n\r") ; 00146 00147 MyLCD.cls(); 00148 MyLCD.printf("Time=00.00.00.00.00\n\r"); 00149 MyLCD.printf("Lap=0"); 00150 } 00151 void A01() 00152 { 00153 //printf("Action=A01\n\r"); 00154 T1.start(); 00155 affiche(); 00156 } 00157 00158 void A02() 00159 { 00160 //printf("Action=A02\n\r"); 00161 T1.stop(); 00162 affiche(); 00163 } 00164 00165 void A03() 00166 { 00167 //printf("Action=A03\n\r"); 00168 T1.reset(); 00169 affiche(); 00170 gestion(); 00171 } 00172 00173 void A04() 00174 { 00175 iLap++; 00176 wait(0.2); 00177 //printf("Action=A04\n\r"); 00178 } 00179 00180 void A05() 00181 { 00182 //printf("Action=A05\n\r"); 00183 affiche(); 00184 } 00185 00186 void A06() 00187 { 00188 //printf("Action=A06\n\r"); 00189 T1.reset(); 00190 gestion(); 00191 } 00192 00193 void A08() 00194 { 00195 //printf("Action=A08\n\r"); 00196 byD=byS=byM=byH=0; 00197 MyLCD.cls(); 00198 affiche(); 00199 } 00200 00201 void affiche() 00202 { 00203 MyLCD.locate(0,0); 00204 //sprintf(,"TIME=%02d %02d %02d %02d",gbyH, gbyM, gbyS, gbyD); 00205 MyLCD.locate(0,0); 00206 MyLCD.printf("TIME=%02d:%02d:%02d:%02d:%02d\n\r",00,byH, byM, byS, byD); 00207 MyLCD.printf("LAP=%d",iLap); 00208 } 00209 00210 void gestion() 00211 { 00212 byD++; 00213 if(byD>99) { 00214 byD=0; 00215 byS++; 00216 if(byS>59) { 00217 byS=0; 00218 byM++; 00219 if(byM>59) { 00220 byM=0; 00221 byH++; 00222 if(byH>23) byH=0; 00223 } 00224 } 00225 } 00226 }
Generated on Fri Aug 12 2022 20:08:06 by
1.7.2