programme final projet s4

Dependencies:   BSP_DISCO_F746NG SDFileSystem TS_DISCO_F746NG affichage_des_ecrans mbed rtc_lib

Revision:
2:a6c2f346bca5
Child:
3:53f3194a919e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main_glb.cpp	Thu Oct 13 06:58:40 2016 +0000
@@ -0,0 +1,930 @@
+#include "mbed.h"
+#include "TS_DISCO_F746NG.h"
+#include "LCD_DISCO_F746NG.h"
+#include "ds1338.h"
+//définition de la zone tactile dans l'ecran principal
+#define TOUCHADMINISTRATEUR ((TS_State.touchDetected) && ( TS_State.touchX[0]>0) &&( TS_State.touchX[0]< 240)&& ( TS_State.touchY[0]>0) && (TS_State.touchY[0] < 272))
+#define TOUCHUTILISATEUR ((TS_State.touchDetected) && ( TS_State.touchX[0]> 240) &&( TS_State.touchX[0]< 480)&& ( TS_State.touchY[0]> 0) && (TS_State.touchY[0] < 272))
+
+// définitions des touches tactiles qui interviennent dans l'écran 1
+#define TOUCHTIMEDATE ((TS_State.touchDetected) && ( TS_State.touchX[0]>10) && (TS_State.touchX[0]< 165)&& (TS_State.touchY[0]>50) && (TS_State.touchY[0] < 180))
+#define TOUCHFREQ ((TS_State.touchDetected) && ( TS_State.touchX[0]>170) && (TS_State.touchX[0]< 328)&& (TS_State.touchY[0]>60) && (TS_State.touchY[0] < 180))        
+#define TOUCHAFFICHAGE ((TS_State.touchDetected) && ( TS_State.touchX[0]>333) &&( TS_State.touchX[0]< 475)&& ( TS_State.touchY[0]> 60) && (TS_State.touchY[0] < 180))
+
+//définitions des touches tactiles qui intervient dans les écrans paramettrable  
+#define TOUCHRETOUR ((TS_State.touchDetected) && ( TS_State.touchX[0]>30) &&( TS_State.touchX[0]< 110)&& ( TS_State.touchY[0]> 210) && (TS_State.touchY[0] < 240))
+#define TOUCHMoins ((TS_State.touchDetected) && ( TS_State.touchX[0]>145) &&( TS_State.touchX[0]< 225)&& ( TS_State.touchY[0]> 210) && (TS_State.touchY[0] < 240))
+#define TOUCHPlus ((TS_State.touchDetected) && ( TS_State.touchX[0]> 245) &&( TS_State.touchX[0]< 325)&& ( TS_State.touchY[0]> 210) && (TS_State.touchY[0] < 240))
+#define TOUCHOK ((TS_State.touchDetected) && ( TS_State.touchX[0]> 360) &&( TS_State.touchX[0]< 440)&& ( TS_State.touchY[0]> 210) && (TS_State.touchY[0] < 240))
+
+//définitions des touches tactiles pour régler l'heure et la date 
+#define TOUCHDAY ((TS_State.touchDetected) && ( TS_State.touchX[0]> 30) &&( TS_State.touchX[0]< 85)&& ( TS_State.touchY[0]> 82) && (TS_State.touchY[0] < 110))       
+#define TOUCHMonth ((TS_State.touchDetected) && ( TS_State.touchX[0]> 100) &&( TS_State.touchX[0]< 160)&& ( TS_State.touchY[0]> 82) && (TS_State.touchY[0] < 110))           
+#define TOUCHYear ((TS_State.touchDetected) && ( TS_State.touchX[0]> 170) &&( TS_State.touchX[0]< 240)&& ( TS_State.touchY[0]> 82) && (TS_State.touchY[0] < 110))    
+#define TOUCHHour ((TS_State.touchDetected) && ( TS_State.touchX[0]> 30) &&( TS_State.touchX[0]< 60)&& ( TS_State.touchY[0]> 164) && (TS_State.touchY[0] < 204))    
+#define TOUCHMinute ((TS_State.touchDetected) && ( TS_State.touchX[0]> 100) &&( TS_State.touchX[0]< 159)&& ( TS_State.touchY[0]> 164) && (TS_State.touchY[0] < 204))    
+#define TOUCHSeconde ((TS_State.touchDetected) && ( TS_State.touchX[0]> 172) &&( TS_State.touchX[0]< 240)&& ( TS_State.touchY[0]> 164) && (TS_State.touchY[0] < 204))  
+
+//définition des touches tactiles pour le réglage de la fréquence d'envoi des données sur la carte SD 
+#define TOUCHPerHour ((TS_State.touchDetected) && ( TS_State.touchX[0]> 25) &&( TS_State.touchX[0]< 175)&& ( TS_State.touchY[0]> 115) && (TS_State.touchY[0] < 145))
+#define TOUCHPerDay ((TS_State.touchDetected) && ( TS_State.touchX[0]> 245) &&( TS_State.touchX[0]< 405)&& ( TS_State.touchY[0]> 115) && (TS_State.touchY[0] < 145))
+#define TOUCHPerWeek ((TS_State.touchDetected) && ( TS_State.touchX[0]> 25) &&( TS_State.touchX[0]< 175)&& ( TS_State.touchY[0]> 155) && (TS_State.touchY[0] < 185))
+#define TOUCHPermonth ((TS_State.touchDetected) && ( TS_State.touchX[0]> 245) &&( TS_State.touchX[0]< 405)&& ( TS_State.touchY[0]> 155) && (TS_State.touchY[0] < 185))  
+
+//définition de l'attente avant l'affichage d'un nouvel écran
+#define ATTENTE wait(0.2);
+
+int affiche=0;
+void horloge();
+char jour[6];   
+char mois[6];
+char annee[6]; 
+char heure[6];   
+char minute[6];
+char seconde[6]; 
+
+LCD_DISCO_F746NG lcd;
+TS_DISCO_F746NG ts;  
+
+DigitalOut led1(LED1);
+///////////////////////////// AFFICHAGE_DES_ECRANS////////////////////////////////////////////
+ 
+ ///////FONTCTION QUI AFFICHE LE MODE UTILISATEUR ET LE MODE ADMINISTRATEUR///
+ void Ecranprincipal()
+ {
+   lcd.Clear(LCD_COLOR_WHITE);
+   lcd.SetBackColor(LCD_COLOR_WHITE);
+   lcd.SetTextColor(LCD_COLOR_WHITE);
+   lcd.FillRect(0,0,239,272);
+   lcd.SetTextColor(LCD_COLOR_BLACK);
+   lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"ADMINISTRATOR", LEFT_MODE);
+    
+    
+    lcd.SetBackColor(LCD_COLOR_BLACK);
+    lcd.SetTextColor(LCD_COLOR_BLACK);
+    lcd.FillRect(240,0,240,272);
+    lcd.SetTextColor(LCD_COLOR_WHITE);
+    lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"USER ACCOUNT", RIGHT_MODE); 
+    }    
+ 
+
+ ////FONTCTION QUI AFFICHE LE MENU PRINCIPAL///////
+   
+        void EcranAdminis()
+        {
+          lcd.Clear(LCD_COLOR_WHITE);
+  
+          
+ //AFFICHAGE DU BOUTON POUR REGLER L'HEURE ET LA DATE         
+           
+          lcd.SetTextColor(LCD_COLOR_BLACK);
+          lcd.DrawRect(10,50,155,130);
+          lcd.SetBackColor(LCD_COLOR_WHITE);
+          lcd.SetTextColor(LCD_COLOR_DARKCYAN);
+          lcd.DisplayStringAt(13, LINE(3), (uint8_t *)"Adjust", LEFT_MODE);
+          lcd.DisplayStringAt(13, LINE(4), (uint8_t *)"the date", LEFT_MODE);
+           lcd.DisplayStringAt(13, LINE(5), (uint8_t *)"and time", LEFT_MODE);
+  
+  
+//AFFICHAGE DU BOUTON POUR REGLER LA FREQUENCE D'ENVOI SUR LA CARTE SD
+          lcd.SetTextColor(LCD_COLOR_BLACK);
+          lcd.DrawRect(170,50,158,130);  
+          lcd.SetBackColor(LCD_COLOR_WHITE);
+          lcd.SetTextColor(LCD_COLOR_DARKRED);
+          lcd.DisplayStringAt(173, LINE(3), (uint8_t *)"Adjust ", LEFT_MODE);
+          lcd.DisplayStringAt(173, LINE(4), (uint8_t *)"the ", LEFT_MODE);
+          lcd.DisplayStringAt(173, LINE(5), (uint8_t *)"Delivery", LEFT_MODE);
+          lcd.DisplayStringAt(173, LINE(6), (uint8_t *)"frequency", LEFT_MODE);
+      
+//AFFICHAGE DU BOUTON POUR AFFICHAGER LES DONNEES ARRIVEES SUR LA CARTE    
+          lcd.SetTextColor(LCD_COLOR_BLACK);
+          lcd.DrawRect(332, 50, 145,130);    
+          lcd.SetBackColor(LCD_COLOR_WHITE);
+          lcd.SetTextColor(LCD_COLOR_DARKGREEN);
+          lcd.DisplayStringAt(333, LINE(3), (uint8_t *)"The ", LEFT_MODE);
+          lcd.DisplayStringAt(333, LINE(4), (uint8_t *)"data", LEFT_MODE);
+          lcd.DisplayStringAt(333, LINE(5), (uint8_t *)"display", LEFT_MODE);
+      
+ //AFFICHAGE DU BOUTON RETOUR        
+          lcd.SetTextColor(LCD_COLOR_DARKRED);
+          lcd.FillRect(30, 210, 80,30);
+          lcd.SetBackColor(LCD_COLOR_DARKRED);
+          lcd.SetTextColor(LCD_COLOR_WHITE); 
+          lcd.DisplayStringAt(30, LINE(9), (uint8_t *)"BACK", LEFT_MODE);
+    
+        }
+  
+ void EcranUtilis()
+        {
+          lcd.Clear(LCD_COLOR_DARKGRAY);
+          lcd.SetBackColor(LCD_COLOR_DARKGRAY);
+          lcd.SetTextColor(LCD_COLOR_YELLOW);
+          lcd.DisplayStringAt(0, LINE(1), (uint8_t *)"THE DATA DISPLAY", CENTER_MODE);
+          
+//AFFICHAGE DU BOUTON POUR AFFICHAGER LES DONNEES ARRIVEES SUR LA CARTE    
+           lcd.SetBackColor(LCD_COLOR_WHITE);
+          lcd.SetTextColor(LCD_COLOR_BLACK);
+      
+  //AFFICHAGE DU BOUTON RETOUR       
+          lcd.SetTextColor(LCD_COLOR_RED);
+          lcd.FillRect(30, 210, 80,30);
+          lcd.SetBackColor(LCD_COLOR_RED);
+          lcd.SetTextColor(LCD_COLOR_WHITE); 
+          lcd.DisplayStringAt(30, LINE(9), (uint8_t *)"BACK", LEFT_MODE);
+    }
+ ///////FONCTION QUI AFFICHE LE NOUVEL ECRAN APRES L'APPUIE DE SUR TIME DATE 
+
+
+        void Ecran2()
+         {
+          void horloge ();
+          lcd.Clear(LCD_COLOR_WHITE);
+          lcd.SetTextColor(LCD_COLOR_BLACK);
+          lcd.SetBackColor(LCD_COLOR_WHITE); 
+          
+          lcd.DisplayStringAt(30, LINE(2), (uint8_t *)"DATE:", LEFT_MODE);
+    //      sprintf((char*)jour,"%02d",time.tm_mday);
+          lcd.DisplayStringAt(30, 82, (uint8_t *)jour, LEFT_MODE);
+          lcd.DisplayStringAt(65, 82, (uint8_t *)"/", LEFT_MODE);
+     //     sprintf((char*)mois,"%02d",time.tm_mon);
+          lcd.DisplayStringAt(80, 82, (uint8_t *) mois, LEFT_MODE);
+          lcd.DisplayStringAt(115, 82, (uint8_t *)"/", LEFT_MODE);
+    //      sprintf((char*)annee,"%04d",time.tm_year);
+          lcd.DisplayStringAt(130, 82, (uint8_t *)annee, LEFT_MODE);
+          
+          lcd.DisplayStringAt(30, 135, (uint8_t *)"TIME:", LEFT_MODE);
+   //       sprintf((char*)heure,"%02d",time.tm_hour);
+          lcd.DisplayStringAt(30, 164, (uint8_t *)heure, LEFT_MODE);
+          lcd.DisplayStringAt(65, 164, (uint8_t *)":", LEFT_MODE);
+          sprintf((char*)minute,"%02d",time.tm_min);
+          lcd.DisplayStringAt(80, 164, (uint8_t *)minute, LEFT_MODE);
+          lcd.DisplayStringAt(115, 164, (uint8_t *)":", LEFT_MODE);
+   //       sprintf((char*)seconde,"%02d",time.tm_sec);
+          lcd.DisplayStringAt(130, 164, (uint8_t *)seconde, LEFT_MODE);
+                 
+
+  //AFFICHAGE DU BOUTON QUITTER              
+          lcd.SetTextColor(LCD_COLOR_DARKRED);
+          lcd.FillRect(30, 210, 80,30);
+          lcd.SetBackColor(LCD_COLOR_DARKRED);
+          lcd.SetTextColor(LCD_COLOR_WHITE); 
+          lcd.DisplayStringAt(30,LINE(9), (uint8_t *)"BACK", LEFT_MODE);
+           
+  }
+  
+  void Ecran2_Day()
+          {
+          lcd.Clear(LCD_COLOR_WHITE);
+          lcd.SetBackColor(LCD_COLOR_WHITE); 
+          lcd.SetTextColor(LCD_COLOR_BLACK);
+          lcd.DisplayStringAt(30, LINE(2), (uint8_t *)"DATE:", LEFT_MODE);
+          lcd.DisplayStringAt(65, 82, (uint8_t *)"/", LEFT_MODE);
+          sprintf((char*)mois,"%02d",time.tm_mon);
+          lcd.DisplayStringAt(80, 82, (uint8_t *) mois, LEFT_MODE);
+          lcd.DisplayStringAt(115, 82, (uint8_t *)"/", LEFT_MODE);
+          sprintf((char*)annee,"%04d",time.tm_year);
+          lcd.DisplayStringAt(130, 82, (uint8_t *)annee, LEFT_MODE);
+          
+          lcd.DisplayStringAt(30, 135, (uint8_t *)"TIME:", LEFT_MODE);
+          sprintf((char*)heure,"%02d",time.tm_hour);
+          lcd.DisplayStringAt(30, 164, (uint8_t *)heure, LEFT_MODE);
+          lcd.DisplayStringAt(65, 164, (uint8_t *)":", LEFT_MODE);
+          sprintf((char*)minute,"%02d",time.tm_min);
+          lcd.DisplayStringAt(80, 164, (uint8_t *)minute, LEFT_MODE);
+          lcd.DisplayStringAt(115, 164, (uint8_t *)":", LEFT_MODE);
+          sprintf((char*)seconde,"%02d ",time.tm_sec);
+          lcd.DisplayStringAt(130, 164, (uint8_t *)seconde, LEFT_MODE);
+          
+          lcd.SetBackColor(LCD_COLOR_BLUE);  
+          sprintf((char*)jour,"%02d",time.tm_mday);
+          lcd.DisplayStringAt(30, 82, (uint8_t *)jour, LEFT_MODE);
+
+
+          
+ //AFFICHAGE DU BOUTON POUR AUGMENTER   
+          lcd.SetTextColor(LCD_COLOR_DARKBLUE);
+          lcd.FillRect(145, 210, 80,30);
+          lcd.SetBackColor(LCD_COLOR_DARKBLUE);
+          lcd.SetTextColor(LCD_COLOR_WHITE);
+          lcd.DisplayStringAt(145, LINE(9), (uint8_t *)"  - ", LEFT_MODE);
+      
+          
+//AFFICHAGE DU BOUTON POUR DIMINUER
+          lcd.SetTextColor(LCD_COLOR_DARKMAGENTA);
+          lcd.FillRect(245, 210, 80,30);
+          lcd.SetBackColor(LCD_COLOR_DARKMAGENTA);
+          lcd.SetTextColor(LCD_COLOR_WHITE);
+          lcd.DisplayStringAt(245, LINE(9), (uint8_t *)"  + ", LEFT_MODE);
+
+//AFFICHAGE DU BOUTON OK            
+          lcd.SetTextColor(LCD_COLOR_DARKGREEN);
+          lcd.FillRect(360, 210, 80,30);
+          lcd.SetBackColor(LCD_COLOR_DARKGREEN);
+          lcd.SetTextColor(LCD_COLOR_WHITE);
+          lcd.DisplayStringAt(360, LINE(9), (uint8_t *)" OK ", LEFT_MODE); 
+           
+          }
+          
+  void Ecran2_Month()
+          {
+          lcd.Clear(LCD_COLOR_WHITE);
+          lcd.SetTextColor(LCD_COLOR_BLACK);
+          lcd.SetBackColor(LCD_COLOR_WHITE); 
+          lcd.DisplayStringAt(30, LINE(2), (uint8_t *)"DATE:", LEFT_MODE);
+          sprintf((char*)jour,"%02d",time.tm_mday);
+          lcd.DisplayStringAt(30, 82, (uint8_t *)jour, LEFT_MODE);
+          lcd.DisplayStringAt(65, 82, (uint8_t *)"/", LEFT_MODE);
+          lcd.DisplayStringAt(115, 82, (uint8_t *)"/", LEFT_MODE);
+          sprintf((char*)annee,"%04d",time.tm_year);
+          lcd.DisplayStringAt(130, 82, (uint8_t *)annee, LEFT_MODE);
+          lcd.DisplayStringAt(30, 135, (uint8_t *)"TIME:", LEFT_MODE);
+          sprintf((char*)heure,"%02d",time.tm_hour);
+          lcd.DisplayStringAt(30, 164, (uint8_t *)heure, LEFT_MODE);
+          lcd.DisplayStringAt(65, 164, (uint8_t *)":", LEFT_MODE);
+          sprintf((char*)minute,"%02d",time.tm_min);
+          lcd.DisplayStringAt(65, 115, (uint8_t *)":", LEFT_MODE);
+          lcd.DisplayStringAt(80, 164, (uint8_t *)minute, LEFT_MODE);
+          sprintf((char*)seconde,"%02d",time.tm_sec);
+          lcd.DisplayStringAt(115, 164, (uint8_t *)"/", LEFT_MODE);
+          lcd.DisplayStringAt(130, 164, (uint8_t *)seconde, LEFT_MODE);         
+
+          lcd.SetBackColor(LCD_COLOR_BLUE); 
+          sprintf((char*)mois,"%02d",time.tm_mon);
+        lcd.DisplayStringAt(80, 82, (uint8_t *) mois, LEFT_MODE);
+
+          
+ //AFFICHAGE DU BOUTON POUR AUGMENTER   
+          lcd.SetTextColor(LCD_COLOR_DARKBLUE);
+          lcd.FillRect(145, 210, 80,30);
+          lcd.SetBackColor(LCD_COLOR_DARKBLUE);
+          lcd.SetTextColor(LCD_COLOR_WHITE);
+          lcd.DisplayStringAt(145, LINE(9), (uint8_t *)"  - ", LEFT_MODE);
+      
+          
+//AFFICHAGE DU BOUTON POUR DIMINUER
+          lcd.SetTextColor(LCD_COLOR_DARKMAGENTA);
+          lcd.FillRect(245, 210, 80,30);
+          lcd.SetBackColor(LCD_COLOR_DARKMAGENTA);
+          lcd.SetTextColor(LCD_COLOR_WHITE);
+          lcd.DisplayStringAt(245, LINE(9), (uint8_t *)"  + ", LEFT_MODE);
+
+//AFFICHAGE DU BOUTON OK            
+          lcd.SetTextColor(LCD_COLOR_DARKGREEN);
+          lcd.FillRect(360, 210, 80,30);
+          lcd.SetBackColor(LCD_COLOR_DARKGREEN);
+          lcd.SetTextColor(LCD_COLOR_WHITE);
+          lcd.DisplayStringAt(360, LINE(9), (uint8_t *)" OK ", LEFT_MODE); 
+            
+           
+          }
+
+ void Ecran2_Year()
+          {
+          lcd.Clear(LCD_COLOR_WHITE);
+          lcd.SetTextColor(LCD_COLOR_BLACK);
+          lcd.SetBackColor(LCD_COLOR_WHITE); 
+          lcd.DisplayStringAt(30, LINE(2), (uint8_t *)"DATE:", LEFT_MODE);
+          sprintf((char*)jour,"%02d",time.tm_mday);
+          lcd.DisplayStringAt(30, 82, (uint8_t *)jour, LEFT_MODE);
+          lcd.DisplayStringAt(65, 82, (uint8_t *)"/", LEFT_MODE);
+          sprintf((char*)mois,"%02d",time.tm_mon);
+          lcd.DisplayStringAt(80, 82, (uint8_t *) mois, LEFT_MODE);
+          lcd.DisplayStringAt(115, 82, (uint8_t *)"/", LEFT_MODE);
+          lcd.DisplayStringAt(30, 135, (uint8_t *)"TIME:", LEFT_MODE);
+          sprintf((char*)heure,"%02d",time.tm_hour);
+          lcd.DisplayStringAt(30, 164, (uint8_t *)heure, LEFT_MODE);
+          lcd.DisplayStringAt(65, 164, (uint8_t *)":", LEFT_MODE);
+          sprintf((char*)minute,"%02d",time.tm_min);
+          lcd.DisplayStringAt(80, 164, (uint8_t *)minute, LEFT_MODE);
+          lcd.DisplayStringAt(115, 164, (uint8_t *)"/", LEFT_MODE);
+          sprintf((char*)seconde,"%02d",time.tm_sec);
+          lcd.DisplayStringAt(130, 164, (uint8_t *)seconde, LEFT_MODE);
+                 
+          lcd.SetBackColor(LCD_COLOR_BLUE); 
+          sprintf((char*)annee,"%04d",time.tm_year);
+          lcd.DisplayStringAt(130, 82, (uint8_t *)annee, LEFT_MODE);
+          
+
+          
+ //AFFICHAGE DU BOUTON POUR AUGMENTER   
+          lcd.SetTextColor(LCD_COLOR_DARKBLUE);
+          lcd.FillRect(145, 210, 80,30);
+          lcd.SetBackColor(LCD_COLOR_DARKBLUE);
+          lcd.SetTextColor(LCD_COLOR_WHITE);
+          lcd.DisplayStringAt(145, LINE(9), (uint8_t *)"  - ", LEFT_MODE);
+      
+          
+//AFFICHAGE DU BOUTON POUR DIMINUER
+          lcd.SetTextColor(LCD_COLOR_DARKMAGENTA);
+          lcd.FillRect(245, 210, 80,30);
+          lcd.SetBackColor(LCD_COLOR_DARKMAGENTA);
+          lcd.SetTextColor(LCD_COLOR_WHITE);
+          lcd.DisplayStringAt(245, LINE(9), (uint8_t *)"  + ", LEFT_MODE);
+
+//AFFICHAGE DU BOUTON OK            
+          lcd.SetTextColor(LCD_COLOR_DARKGREEN);
+          lcd.FillRect(360, 210, 80,30);
+          lcd.SetBackColor(LCD_COLOR_DARKGREEN);
+          lcd.SetTextColor(LCD_COLOR_WHITE);
+          lcd.DisplayStringAt(360, LINE(9), (uint8_t *)" OK ", LEFT_MODE); 
+     
+           
+          }         
+
+ void Ecran2_Hour()
+          { 
+          
+          lcd.Clear(LCD_COLOR_WHITE);
+          lcd.SetTextColor(LCD_COLOR_BLACK);
+          lcd.SetBackColor(LCD_COLOR_WHITE); 
+          lcd.DisplayStringAt(30, LINE(2), (uint8_t *)"DATE:", LEFT_MODE);
+          sprintf((char*)jour,"%02d",time.tm_mday);
+          lcd.DisplayStringAt(30, 82, (uint8_t *)jour, LEFT_MODE);
+          lcd.DisplayStringAt(65, 82, (uint8_t *)"/", LEFT_MODE);
+          sprintf((char*)mois,"%02d",time.tm_mon);
+          lcd.DisplayStringAt(80, 82, (uint8_t *) mois, LEFT_MODE);
+          lcd.DisplayStringAt(115, 82, (uint8_t *)"/", LEFT_MODE);
+          sprintf((char*)annee,"%04d",time.tm_year);
+          lcd.DisplayStringAt(130, 82, (uint8_t *)annee, LEFT_MODE);
+          lcd.DisplayStringAt(30, 135, (uint8_t *)"TIME:", LEFT_MODE);
+          lcd.DisplayStringAt(65, 164, (uint8_t *)":", LEFT_MODE);
+          sprintf((char*)minute,"%02d",time.tm_min);
+          lcd.DisplayStringAt(80, 164, (uint8_t *)minute, LEFT_MODE);
+          lcd.DisplayStringAt(115, 164, (uint8_t *)":", LEFT_MODE);
+          sprintf((char*)seconde,"%02d",time.tm_sec);
+          lcd.DisplayStringAt(130, 164, (uint8_t *)seconde, LEFT_MODE);
+    
+          lcd.SetBackColor(LCD_COLOR_BLUE); 
+          sprintf((char*)heure,"%02d",time.tm_hour);
+          lcd.DisplayStringAt(30, 164, (uint8_t *)heure, LEFT_MODE);
+          
+
+          
+ //AFFICHAGE DU BOUTON POUR AUGMENTER   
+          lcd.SetTextColor(LCD_COLOR_DARKBLUE);
+          lcd.FillRect(145, 210, 80,30);
+          lcd.SetBackColor(LCD_COLOR_DARKBLUE);
+          lcd.SetTextColor(LCD_COLOR_WHITE);
+          lcd.DisplayStringAt(145, LINE(9), (uint8_t *)"  - ", LEFT_MODE);
+      
+          
+//AFFICHAGE DU BOUTON POUR DIMINUER
+          lcd.SetTextColor(LCD_COLOR_DARKMAGENTA);
+          lcd.FillRect(245, 210, 80,30);
+          lcd.SetBackColor(LCD_COLOR_DARKMAGENTA);
+          lcd.SetTextColor(LCD_COLOR_WHITE);
+          lcd.DisplayStringAt(245, LINE(9), (uint8_t *)"  + ", LEFT_MODE);
+
+//AFFICHAGE DU BOUTON OK            
+          lcd.SetTextColor(LCD_COLOR_DARKGREEN);
+          lcd.FillRect(360, 210, 80,30);
+          lcd.SetBackColor(LCD_COLOR_DARKGREEN);
+          lcd.SetTextColor(LCD_COLOR_WHITE);
+          lcd.DisplayStringAt(360, LINE(9), (uint8_t *)" OK ", LEFT_MODE); 
+           
+           
+          }  
+
+ void Ecran2_Minutes()
+          {
+           lcd.Clear(LCD_COLOR_WHITE);
+          lcd.SetTextColor(LCD_COLOR_BLACK);
+          lcd.SetBackColor(LCD_COLOR_WHITE); 
+          lcd.DisplayStringAt(30, LINE(2), (uint8_t *)"DATE:", LEFT_MODE);
+          sprintf(jour,"%02d",time.tm_mday);
+          lcd.DisplayStringAt(30, 82, (uint8_t *)jour, LEFT_MODE);
+          lcd.DisplayStringAt(65, 82, (uint8_t *)"/", LEFT_MODE);
+          sprintf(mois,"%02d",time.tm_mon);
+          lcd.DisplayStringAt(80, 82, (uint8_t *) mois, LEFT_MODE);
+          lcd.DisplayStringAt(115, 82, (uint8_t *)"/", LEFT_MODE);
+          sprintf(annee,"%04d",time.tm_year);
+          lcd.DisplayStringAt(130, 82, (uint8_t *)annee, LEFT_MODE);
+          lcd.DisplayStringAt(30, 135, (uint8_t *)"TIME:", LEFT_MODE);
+          sprintf(heure,"%02d",time.tm_hour);
+          lcd.DisplayStringAt(30, 164, (uint8_t *)heure, LEFT_MODE);
+          lcd.DisplayStringAt(65, 164, (uint8_t *)":", LEFT_MODE);
+          lcd.DisplayStringAt(115, 164, (uint8_t *)":", LEFT_MODE);
+          sprintf(seconde,"%02d",time.tm_sec);
+          lcd.DisplayStringAt(130, 164, (uint8_t *)seconde, LEFT_MODE);
+                 
+          lcd.SetBackColor(LCD_COLOR_BLUE); 
+          sprintf(minute,"%02d",time.tm_min);
+          lcd.DisplayStringAt(80, 164, (uint8_t *)minute, LEFT_MODE);
+         
+
+          
+//AFFICHAGE DU BOUTON POUR AUGMENTER   
+          lcd.SetTextColor(LCD_COLOR_DARKBLUE);
+          lcd.FillRect(145, 210, 80,30);
+          lcd.SetBackColor(LCD_COLOR_DARKBLUE);
+          lcd.SetTextColor(LCD_COLOR_WHITE);
+          lcd.DisplayStringAt(145, LINE(9), (uint8_t *)"  - ", LEFT_MODE);
+      
+          
+//AFFICHAGE DU BOUTON POUR DIMINUER
+          lcd.SetTextColor(LCD_COLOR_DARKMAGENTA);
+          lcd.FillRect(245, 210, 80,30);
+          lcd.SetBackColor(LCD_COLOR_DARKMAGENTA);
+          lcd.SetTextColor(LCD_COLOR_WHITE);
+          lcd.DisplayStringAt(245, LINE(9), (uint8_t *)"  + ", LEFT_MODE);
+
+//AFFICHAGE DU BOUTON OK            
+          lcd.SetTextColor(LCD_COLOR_DARKGREEN);
+          lcd.FillRect(360, 210, 80,30);
+          lcd.SetBackColor(LCD_COLOR_DARKGREEN);
+          lcd.SetTextColor(LCD_COLOR_WHITE);
+          lcd.DisplayStringAt(360, LINE(9), (uint8_t *)" OK ", LEFT_MODE); 
+           
+           
+          }     
+         
+ void Ecran2_Seconde()
+          {
+               lcd.Clear(LCD_COLOR_WHITE);
+          lcd.SetTextColor(LCD_COLOR_BLACK);
+          lcd.SetBackColor(LCD_COLOR_WHITE); 
+          lcd.DisplayStringAt(30, LINE(2), (uint8_t *)"TIME:", LEFT_MODE);
+          sprintf(jour,"%02d",time.tm_mday);
+          lcd.DisplayStringAt(30, 82, (uint8_t *)jour, LEFT_MODE);
+          lcd.DisplayStringAt(65, 82, (uint8_t *)"/", LEFT_MODE);
+          sprintf(mois,"%02d",time.tm_mon);
+          lcd.DisplayStringAt(80, 82, (uint8_t *) mois, LEFT_MODE);
+          lcd.DisplayStringAt(115, 82, (uint8_t *)"/", LEFT_MODE);
+          sprintf(annee," %04d",time.tm_year);
+          lcd.DisplayStringAt(130, 82, (uint8_t *)annee, LEFT_MODE);
+          lcd.DisplayStringAt(30, 135, (uint8_t *)"DATE:", LEFT_MODE);
+          sprintf(heure,"%02d",time.tm_hour);
+          lcd.DisplayStringAt(30, 164, (uint8_t *)heure, LEFT_MODE);
+          lcd.DisplayStringAt(65, 164, (uint8_t *)":", LEFT_MODE);
+          sprintf(minute,"%02d",time.tm_min);
+          lcd.DisplayStringAt(80, 164, (uint8_t *)minute, LEFT_MODE);
+          lcd.DisplayStringAt(115, 164, (uint8_t *)":", LEFT_MODE);
+         
+          lcd.SetBackColor(LCD_COLOR_BLUE); 
+           sprintf(seconde,"%02d ",time.tm_sec);
+          lcd.DisplayStringAt(130, 164, (uint8_t *)seconde, LEFT_MODE);
+              
+
+          
+//AFFICHAGE DU BOUTON POUR AUGMENTER   
+          lcd.SetTextColor(LCD_COLOR_DARKBLUE);
+          lcd.FillRect(145, 210, 80,30);
+          lcd.SetBackColor(LCD_COLOR_DARKBLUE);
+          lcd.SetTextColor(LCD_COLOR_WHITE);
+          lcd.DisplayStringAt(145, LINE(9), (uint8_t *)"  - ", LEFT_MODE);
+      
+          
+//AFFICHAGE DU BOUTON POUR DIMINUER
+          lcd.SetTextColor(LCD_COLOR_DARKMAGENTA);
+          lcd.FillRect(245, 210, 80,30);
+          lcd.SetBackColor(LCD_COLOR_DARKMAGENTA);
+          lcd.SetTextColor(LCD_COLOR_WHITE);
+          lcd.DisplayStringAt(245, LINE(9), (uint8_t *)"  + ", LEFT_MODE);
+
+//AFFICHAGE DU BOUTON OK            
+          lcd.SetTextColor(LCD_COLOR_DARKGREEN);
+          lcd.FillRect(360, 210, 80,30);
+          lcd.SetBackColor(LCD_COLOR_DARKGREEN);
+          lcd.SetTextColor(LCD_COLOR_WHITE);
+          lcd.DisplayStringAt(360, LINE(9), (uint8_t *)" OK ", LEFT_MODE); 
+           }         
+           
+          
+///////FONCTION QUI AFFICHE LE NOUVEL ECRAN APRES L'APPUIE DE SUR FREQ           
+          void Ecran3()
+          {
+              
+          lcd.Clear(LCD_COLOR_WHITE);
+          lcd.SetBackColor(LCD_COLOR_WHITE);
+          lcd.SetTextColor(LCD_COLOR_DARKGRAY);
+          lcd.DisplayStringAt(10, LINE(1), (uint8_t *)"Select the frequency of", CENTER_MODE);
+          lcd.DisplayStringAt(10, LINE(2), (uint8_t *)"sending of the data on the", CENTER_MODE);
+          lcd.DisplayStringAt(10, LINE(3), (uint8_t *)"SD card: ", CENTER_MODE);
+          
+          lcd.DisplayStringAt(30,120, (uint8_t *)"Per hour ", LEFT_MODE);
+          lcd.DisplayStringAt(250, 120, (uint8_t *)"Per day", LEFT_MODE);
+          lcd.DisplayStringAt(30, 160, (uint8_t *)"Per week ", LEFT_MODE);
+          lcd.DisplayStringAt(250, 160, (uint8_t *)"Per month", LEFT_MODE);
+          
+          
+          lcd.SetTextColor(LCD_COLOR_DARKRED);
+          lcd.DrawRect(25, 115, 160, 30);
+          lcd.DrawRect(245, 115, 160,30);
+          lcd.DrawRect(25, 155, 160, 30);
+          lcd.DrawRect(245, 155, 160,30);
+        
+  //AFFICHAGE DU BOUTON RETOUR             
+         
+          lcd.SetBackColor(LCD_COLOR_DARKRED);
+          lcd.SetTextColor(LCD_COLOR_WHITE); 
+          lcd.DisplayStringAt(30, LINE(9), (uint8_t *)"BACK", LEFT_MODE); 
+           }
+           
+           void Ecran3_PerHour()
+          {
+             
+           }
+            void Ecran3_PerDay()
+          {
+             
+           }
+            void Ecran3_PerWeek()
+          {
+             
+           }
+            void Ecran3_PerMonth()
+          {
+             
+           }
+           
+           
+///////FONCTION QUI AFFICHE LE NOUVEL ECRAN APRES L'APPUIE DE SUR AFFICHAGE
+           
+            void Ecran4()
+          {
+
+  //AFFICHAGE DU BOUTON QUITTER                  
+          lcd.SetTextColor(LCD_COLOR_RED);
+          lcd.FillRect(30, 210, 80,30);
+          lcd.SetBackColor(LCD_COLOR_RED);
+          lcd.SetTextColor(LCD_COLOR_WHITE); 
+          lcd.DisplayStringAt(30, LINE(9), (uint8_t *)"QUIT", LEFT_MODE);
+    
+          
+ //AFFICHAGE DU BOUTON RETOUR   
+          lcd.SetTextColor(LCD_COLOR_CYAN);
+          lcd.FillRect(145, 210, 80,30);
+          lcd.SetBackColor(LCD_COLOR_CYAN);
+          lcd.SetTextColor(LCD_COLOR_WHITE);
+          lcd.DisplayStringAt(145, LINE(9), (uint8_t *)"BACK", LEFT_MODE);
+          
+ //AFFICHAGE DU BOUTON SUIVANT
+          lcd.SetTextColor(LCD_COLOR_CYAN);
+          lcd.FillRect(245, 210, 80,30);
+          lcd.SetBackColor(LCD_COLOR_CYAN);
+          lcd.SetTextColor(LCD_COLOR_WHITE);
+          lcd.DisplayStringAt(245, LINE(9), (uint8_t *)"NEXT", LEFT_MODE);
+          
+//AFFICHAGE DU BOUTON OK            
+          lcd.SetTextColor(LCD_COLOR_GREEN);
+          lcd.FillRect(360, 210, 80,30);
+           lcd.SetBackColor(LCD_COLOR_GREEN);
+          lcd.SetTextColor(LCD_COLOR_WHITE);
+         lcd.DisplayStringAt(360, LINE(9), (uint8_t *)" OK ", LEFT_MODE);
+         } 
+         
+         
+     void horloge(){
+    /////////////////////////initialisation horloge///////////////////
+  AnalogIn Vpan(A0);
+    AnalogIn Ipan(A1);
+    AnalogIn Tpan(A2);
+    AnalogIn Irr(A3);
+    AnalogIn Vbat(A4);
+    AnalogIn Ibat(A5);
+    
+    struct tm time;
+    int count;
+ 
+    Serial pc(USBTX, USBRX);
+    pc.baud(9600);
+    pc.printf("DS1338 Demo\r\n");
+    DS1338 ds1338(D14,D15);
+//#ifdef INIT_TIME
+    count=0;
+    time.tm_sec=0;
+    time.tm_min=28;
+    time.tm_hour=14;
+    time.tm_mday=10;
+    time.tm_year=116;
+    time.tm_mon=0;
+    time.tm_wday=2;
+    time.tm_yday=0;
+    time.tm_isdst=0;
+    ds1338.writeTime(&time);
+//#endif
+//////////////////////////////////////////////////////////////////   
+}          
+  int main()
+  {
+    
+    lcd.Clear(LCD_COLOR_BLACK);
+    lcd.SetBackColor(LCD_COLOR_BLACK);
+    lcd.SetTextColor(LCD_COLOR_WHITE);
+    lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"WELCOME TO LAOS PROJET", CENTER_MODE); 
+    
+    wait(1); 
+    affiche=1;    
+         
+      TS_StateTypeDef TS_State;
+      ts.Init(480, 272);
+     
+          while(1)
+      {
+         ts.GetState(&TS_State);  
+         
+        
+         
+    typedef enum  {etat0, etat1, etat1_1,etat_reg_minute, etat3, etat4 ,etat2, etat_reg_day, etat_reg_month,etat_reg_year, etat_reg_hour} type_etat;
+    static type_etat etat= etat0;
+    
+    switch (etat)
+         { 
+         case etat0:
+         if (affiche==1)
+          { 
+           Ecranprincipal ();
+           affiche=0;
+          }  
+
+         if (TOUCHUTILISATEUR)
+            { 
+          etat= etat1_1;
+          affiche=1;
+           ATTENTE
+             }  
+             
+          if (TOUCHADMINISTRATEUR)
+             { 
+             etat= etat1;
+             affiche=1;
+             ATTENTE
+             }               
+             break;
+
+        case etat1_1:
+        if(affiche==1)
+          { 
+           ATTENTE
+          EcranUtilis ();
+          affiche=0;
+          }  
+        /*if (TOUCHAFF)    
+          { 
+          etat=etat4;
+          affiche=1;
+            }*/  
+            if (TOUCHRETOUR)
+              {
+                etat= etat0;
+                affiche=1;
+                ATTENTE
+              }
+             break;
+             
+           case etat1: 
+          if (affiche==1)
+          { 
+           ATTENTE
+           EcranAdminis ();
+            ;
+           affiche=0;
+            }  
+
+           if (TOUCHTIMEDATE)     
+             {
+              etat = etat2;
+              affiche=1; 
+             }
+           if  (TOUCHFREQ) 
+           {
+             etat= etat3;
+             affiche=1; 
+            } 
+          if (TOUCHAFFICHAGE)
+             {
+               etat=etat4; 
+               affiche=1; 
+             }
+          if (TOUCHRETOUR)
+              {
+                etat= etat0;
+                affiche=1;
+                 ATTENTE;
+              }   
+          break;
+          
+         case etat2:   
+            if (affiche==1)
+            { 
+            Ecran2();
+            affiche=0;
+            }  
+            if (TOUCHRETOUR)
+              {
+                etat= etat1;
+                affiche=1;
+                 ATTENTE
+              }
+               if (TOUCHDAY)
+                {
+             etat= etat_reg_day;
+             affiche=1; 
+            } 
+              if (TOUCHMonth)
+             {
+               etat=etat_reg_month; 
+               affiche=1; 
+             }
+           if (TOUCHYear)
+             {
+               etat=etat_reg_year; 
+               affiche=1; 
+             }
+              if (TOUCHHour)
+             {
+               etat=etat_reg_hour; 
+               affiche=1; 
+             } 
+              if (TOUCHMinute)
+             {
+               etat=etat_reg_minute; 
+               affiche=1; 
+             }
+              if (TOUCHRETOUR)
+              {
+                etat= etat1;
+                affiche=1;
+                ATTENTE
+              } 
+           if (TOUCHSeconde)
+             {
+               time.tm_sec=0; 
+               affiche=1; 
+             }        
+          break;
+          
+      
+      
+           
+         case etat_reg_day:   
+            if (affiche==1)
+            {   
+            Ecran2_Day();
+            affiche=0;
+            }
+            
+            if(TOUCHPlus){
+                 time.tm_mday=time.tm_mday+1;
+                 ATTENTE
+                 Ecran2_Day();
+                 //if(day>30) day=0;
+            }
+            if(TOUCHMoins)
+             {
+                 time.tm_mday=time.tm_mday-1;
+                 wait (0.3);
+                 Ecran2_Day();
+                 //if(day<2) day=32;
+             }    
+           if ( (TOUCHOK)||(TOUCHRETOUR) )
+              {
+                etat= etat2;
+                affiche=1;
+                 ATTENTE
+              }
+       break;
+           
+         case etat_reg_month:   
+            if (affiche==1){   
+                Ecran2_Month();
+                affiche=0;
+                }
+            if(TOUCHPlus)
+             {
+                 time.tm_mon=time.tm_mon+1;
+                  ATTENTE
+                 Ecran2_Month();
+                 //if(month>11) month=0;
+                 }
+            if(TOUCHMoins)
+             {
+                  time.tm_mon=time.tm_mon-1;
+                  ATTENTE
+                 Ecran2_Month();
+                  //if(month<2) month=13;
+                 
+            }
+            if ( (TOUCHOK)|| (TOUCHRETOUR))
+              {
+                etat= etat2;
+                affiche=1;
+                 ATTENTE
+              }    
+              
+          break;
+       case etat_reg_year:   
+              if (affiche==1){  
+                  Ecran2_Year ();
+                  affiche=0;
+                   }          
+            
+                if(TOUCHPlus)
+                 {
+                   time.tm_year=time.tm_year+1;
+                   ATTENTE
+                     Ecran2_Year();
+                   //if(year>3000) year=2000;
+                 }
+                if(TOUCHMoins)
+                  {
+                   time.tm_year=time.tm_year-1;
+                   ATTENTE
+                   Ecran2_Year();
+                   //if(year<2000) year=3000;
+                   }
+                if ((TOUCHOK) ||(TOUCHRETOUR))
+                  {
+                   etat= etat2;
+                   affiche=1;
+                   ATTENTE
+                  }      
+           
+       break;
+       
+        case etat_reg_hour:   
+            if (affiche==1){  
+                affiche=0;
+                Ecran2_Hour();
+            }     
+            
+                if(TOUCHPlus){
+                    time.tm_hour=time.tm_hour+1;
+                    ATTENTE
+                     Ecran2_Hour();
+                    //if(hour>22) hour=0;
+                }
+                if(TOUCHMoins){
+                    time.tm_hour=time.tm_hour-1;
+                    ATTENTE
+                     Ecran2_Hour();
+                    //if(hour<1) hour=24;
+                }
+            
+            if ((TOUCHOK)||(TOUCHRETOUR)){
+                etat= etat2;
+                affiche=1;
+                ATTENTE
+            }        
+       break;  
+       
+       
+       case etat_reg_minute:   
+            if (affiche==1)
+            {   Ecran2_Minutes();
+                 affiche=0;
+              } 
+           
+            if(TOUCHPlus)
+             {
+                 time.tm_min=time.tm_min+1;
+                 ATTENTE
+                 Ecran2_Minutes();
+                 //if(min>58) min=0;
+                 }
+            if(TOUCHMoins)
+             {
+                time.tm_min=time.tm_min-1;
+                wait (0.3);
+                 Ecran2_Minutes();
+                //if(min>2) min=59;
+                 }
+            if ((TOUCHOK) || (TOUCHRETOUR)){
+                etat= etat2;
+                affiche=1;
+                ATTENTE
+            }              
+       break;  
+        
+        case etat3: 
+         if (affiche==1)
+         { 
+             Ecran3();
+             affiche=0;
+          }  
+          if (TOUCHRETOUR)
+              {
+                etat= etat1;
+                affiche=1;
+                 ATTENTE
+              }
+        break;
+        
+        case etat4:
+        if (affiche==1)
+        { 
+          Ecran4();
+          affiche=0;
+        }  
+        if (TOUCHRETOUR)
+          {
+          etat= etat1;
+          affiche=1;
+           ATTENTE
+          }
+        break; 
+       }   
+     } 
+   }
+
+   
\ No newline at end of file