programme final projet s4

Dependencies:   BSP_DISCO_F746NG SDFileSystem TS_DISCO_F746NG affichage_des_ecrans mbed rtc_lib

Committer:
Asoumy
Date:
Wed Nov 23 23:01:54 2016 +0000
Revision:
5:218218777e38
Parent:
4:c6e9b4449a5f
programme final du projet

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Asoumy 2:a6c2f346bca5 1 #include "mbed.h"
Asoumy 2:a6c2f346bca5 2 #include "TS_DISCO_F746NG.h"
Asoumy 2:a6c2f346bca5 3 #include "LCD_DISCO_F746NG.h"
Asoumy 2:a6c2f346bca5 4 #include "ds1338.h"
Asoumy 3:53f3194a919e 5 #include "horloge.h"
Asoumy 3:53f3194a919e 6 #include "Ecran.h"
Asoumy 4:c6e9b4449a5f 7 #include "SDFileSystem.h"
Asoumy 2:a6c2f346bca5 8 //définition de la zone tactile dans l'ecran principal
Asoumy 2:a6c2f346bca5 9 #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))
Asoumy 2:a6c2f346bca5 10 #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))
Asoumy 2:a6c2f346bca5 11
Asoumy 2:a6c2f346bca5 12 // définitions des touches tactiles qui interviennent dans l'écran 1
Asoumy 2:a6c2f346bca5 13 #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))
Asoumy 2:a6c2f346bca5 14 #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))
Asoumy 2:a6c2f346bca5 15 #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))
Asoumy 2:a6c2f346bca5 16
Asoumy 2:a6c2f346bca5 17 //définitions des touches tactiles qui intervient dans les écrans paramettrable
Asoumy 2:a6c2f346bca5 18 #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))
Asoumy 2:a6c2f346bca5 19 #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))
Asoumy 2:a6c2f346bca5 20 #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))
Asoumy 2:a6c2f346bca5 21 #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))
Asoumy 2:a6c2f346bca5 22
Asoumy 2:a6c2f346bca5 23 //définitions des touches tactiles pour régler l'heure et la date
Asoumy 2:a6c2f346bca5 24 #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))
Asoumy 2:a6c2f346bca5 25 #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))
Asoumy 2:a6c2f346bca5 26 #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))
Asoumy 2:a6c2f346bca5 27 #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))
Asoumy 2:a6c2f346bca5 28 #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))
Asoumy 2:a6c2f346bca5 29 #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))
Asoumy 2:a6c2f346bca5 30
Asoumy 2:a6c2f346bca5 31 //définition des touches tactiles pour le réglage de la fréquence d'envoi des données sur la carte SD
Asoumy 4:c6e9b4449a5f 32 #define TOUCHAcquire ((TS_State.touchDetected) && ( TS_State.touchX[0]> 25) &&( TS_State.touchX[0]< 175)&& ( TS_State.touchY[0]> 115) && (TS_State.touchY[0] < 145))
Asoumy 2:a6c2f346bca5 33 #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))
Asoumy 2:a6c2f346bca5 34 #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))
Asoumy 2:a6c2f346bca5 35 #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))
Asoumy 2:a6c2f346bca5 36
Asoumy 2:a6c2f346bca5 37 //définition de l'attente avant l'affichage d'un nouvel écran
Asoumy 2:a6c2f346bca5 38 #define ATTENTE wait(0.2);
Asoumy 2:a6c2f346bca5 39
Asoumy 4:c6e9b4449a5f 40 // définition des touche des chiffres pour la saisie du mot passe
Asoumy 4:c6e9b4449a5f 41
Asoumy 4:c6e9b4449a5f 42 #define TOUCH1 (( TS_State.touchDetected) && ( TS_State.touchX[0]>135) &&( TS_State.touchX[0]<185)&& ( TS_State.touchY[0]>90) && (TS_State.touchY[0]<115))
Asoumy 4:c6e9b4449a5f 43 #define TOUCH2 (( TS_State.touchDetected) && ( TS_State.touchX[0]>215) &&( TS_State.touchX[0]<260)&& ( TS_State.touchY[0]>90) && (TS_State.touchY[0]<115))
Asoumy 4:c6e9b4449a5f 44 #define TOUCH3 (( TS_State.touchDetected) && ( TS_State.touchX[0]>295) &&( TS_State.touchX[0]<345)&& ( TS_State.touchY[0]>90) && (TS_State.touchY[0]<115))
Asoumy 4:c6e9b4449a5f 45 #define TOUCH4 (( TS_State.touchDetected) && ( TS_State.touchX[0]>135) &&( TS_State.touchX[0]<185)&& ( TS_State.touchY[0]>130) && (TS_State.touchY[0]<155))
Asoumy 4:c6e9b4449a5f 46 #define TOUCH5 (( TS_State.touchDetected) && ( TS_State.touchX[0]>215) &&( TS_State.touchX[0]<260)&& ( TS_State.touchY[0]>130) && (TS_State.touchY[0]<155))
Asoumy 4:c6e9b4449a5f 47 #define TOUCH6 (( TS_State.touchDetected) && ( TS_State.touchX[0]>295) &&( TS_State.touchX[0]<345)&& ( TS_State.touchY[0]>130) && (TS_State.touchY[0]<155))
Asoumy 4:c6e9b4449a5f 48 #define TOUCH7 (( TS_State.touchDetected) && ( TS_State.touchX[0]>135) &&( TS_State.touchX[0]<185)&& ( TS_State.touchY[0]>170) && (TS_State.touchY[0]<195))
Asoumy 4:c6e9b4449a5f 49 #define TOUCH8 (( TS_State.touchDetected) && ( TS_State.touchX[0]>215) &&( TS_State.touchX[0]<260)&& ( TS_State.touchY[0]>170) && (TS_State.touchY[0]<195))
Asoumy 4:c6e9b4449a5f 50 #define TOUCH9 (( TS_State.touchDetected) && ( TS_State.touchX[0]>295) &&( TS_State.touchX[0]<345)&& ( TS_State.touchY[0]>170) && (TS_State.touchY[0]<195))
Asoumy 4:c6e9b4449a5f 51 #define TOUCHVALID (( TS_State.touchDetected) && ( TS_State.touchX[0]>210) &&( TS_State.touchX[0]<280)&& ( TS_State.touchY[0]>210) && (TS_State.touchY[0]<235))
Asoumy 4:c6e9b4449a5f 52 /////affichage de l'heure
Asoumy 4:c6e9b4449a5f 53 #define TOUCHSHOWTIME ((TS_State.touchDetected) && ( TS_State.touchX[0]>395 ) &&( TS_State.touchX[0]<475)&& ( TS_State.touchY[0]>10) && (TS_State.touchY[0] <40))
Asoumy 4:c6e9b4449a5f 54
Asoumy 2:a6c2f346bca5 55 int affiche=0;
Asoumy 4:c6e9b4449a5f 56 int password=0;
Asoumy 3:53f3194a919e 57
Asoumy 3:53f3194a919e 58
Asoumy 2:a6c2f346bca5 59 TS_DISCO_F746NG ts;
Asoumy 2:a6c2f346bca5 60
Asoumy 2:a6c2f346bca5 61 DigitalOut led1(LED1);
Asoumy 4:c6e9b4449a5f 62 Serial pc(USBTX, USBRX);
Asoumy 3:53f3194a919e 63
Asoumy 2:a6c2f346bca5 64 int main()
Asoumy 2:a6c2f346bca5 65 {
Asoumy 4:c6e9b4449a5f 66 unsigned int day =00;
Asoumy 4:c6e9b4449a5f 67 unsigned int month =00;
Asoumy 4:c6e9b4449a5f 68 unsigned int year=2000;
Asoumy 4:c6e9b4449a5f 69 unsigned int hour =00;
Asoumy 4:c6e9b4449a5f 70 unsigned int min =00;
Asoumy 4:c6e9b4449a5f 71 unsigned int sec=00;
Asoumy 4:c6e9b4449a5f 72 SDFileSystem sd(D11,D12,D13 , D3, "sd");
Asoumy 4:c6e9b4449a5f 73 AnalogIn Vpan(A0);
Asoumy 4:c6e9b4449a5f 74 AnalogIn Ipan(A1);
Asoumy 4:c6e9b4449a5f 75 AnalogIn Tpan(A2);
Asoumy 4:c6e9b4449a5f 76 AnalogIn Irr(A3);
Asoumy 4:c6e9b4449a5f 77 AnalogIn Vbat(A4);
Asoumy 4:c6e9b4449a5f 78 AnalogIn Ibat(A5);
Asoumy 3:53f3194a919e 79 DS1338 ds1338(D14,D15);
Asoumy 4:c6e9b4449a5f 80 LCD_DISCO_F746NG lcd;
Asoumy 4:c6e9b4449a5f 81 lcd.Clear(LCD_COLOR_BLACK);
Asoumy 4:c6e9b4449a5f 82 lcd.SetBackColor(LCD_COLOR_BLACK);
Asoumy 4:c6e9b4449a5f 83 lcd.SetTextColor(LCD_COLOR_WHITE);
Asoumy 4:c6e9b4449a5f 84 lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"WELCOME TO LAOS PROJET", CENTER_MODE);
Asoumy 4:c6e9b4449a5f 85 wait(1);
Asoumy 4:c6e9b4449a5f 86 affiche=1;
Asoumy 4:c6e9b4449a5f 87
Asoumy 3:53f3194a919e 88 struct tm time;
Asoumy 4:c6e9b4449a5f 89
Asoumy 4:c6e9b4449a5f 90
Asoumy 2:a6c2f346bca5 91 TS_StateTypeDef TS_State;
Asoumy 2:a6c2f346bca5 92 ts.Init(480, 272);
Asoumy 4:c6e9b4449a5f 93
Asoumy 4:c6e9b4449a5f 94 time.tm_sec=0;
Asoumy 4:c6e9b4449a5f 95 time.tm_min=28;
Asoumy 4:c6e9b4449a5f 96 time.tm_hour=11;
Asoumy 4:c6e9b4449a5f 97 time.tm_mday=19;
Asoumy 4:c6e9b4449a5f 98 time.tm_year=116;
Asoumy 4:c6e9b4449a5f 99 time.tm_mon=9;
Asoumy 4:c6e9b4449a5f 100 time.tm_wday=3;
Asoumy 4:c6e9b4449a5f 101 time.tm_yday=0;
Asoumy 4:c6e9b4449a5f 102 time.tm_isdst=0;
Asoumy 4:c6e9b4449a5f 103 ds1338.writeTime(&time);
Asoumy 4:c6e9b4449a5f 104
Asoumy 2:a6c2f346bca5 105 while(1)
Asoumy 2:a6c2f346bca5 106 {
Asoumy 2:a6c2f346bca5 107 ts.GetState(&TS_State);
Asoumy 3:53f3194a919e 108
Asoumy 3:53f3194a919e 109 ds1338.readTime(&time);
Asoumy 2:a6c2f346bca5 110
Asoumy 2:a6c2f346bca5 111
Asoumy 4:c6e9b4449a5f 112 typedef enum {etat0, etat1,etat_reg_minute, etat_mot_de_passe,Etat_ecran_affichage,Etat_ecranUtilis,etat3,etat2, etat_reg_day, etat_reg_month,etat_reg_year, etat_reg_hour} type_etat;
Asoumy 2:a6c2f346bca5 113 static type_etat etat= etat0;
Asoumy 2:a6c2f346bca5 114
Asoumy 2:a6c2f346bca5 115 switch (etat)
Asoumy 2:a6c2f346bca5 116 {
Asoumy 2:a6c2f346bca5 117 case etat0:
Asoumy 2:a6c2f346bca5 118 if (affiche==1)
Asoumy 2:a6c2f346bca5 119 {
Asoumy 2:a6c2f346bca5 120 Ecranprincipal ();
Asoumy 2:a6c2f346bca5 121 affiche=0;
Asoumy 2:a6c2f346bca5 122 }
Asoumy 2:a6c2f346bca5 123
Asoumy 2:a6c2f346bca5 124 if (TOUCHUTILISATEUR)
Asoumy 2:a6c2f346bca5 125 {
Asoumy 4:c6e9b4449a5f 126 etat= Etat_ecranUtilis;
Asoumy 2:a6c2f346bca5 127 affiche=1;
Asoumy 2:a6c2f346bca5 128 ATTENTE
Asoumy 2:a6c2f346bca5 129 }
Asoumy 2:a6c2f346bca5 130
Asoumy 2:a6c2f346bca5 131 if (TOUCHADMINISTRATEUR)
Asoumy 2:a6c2f346bca5 132 {
Asoumy 4:c6e9b4449a5f 133 etat= etat_mot_de_passe;
Asoumy 2:a6c2f346bca5 134 affiche=1;
Asoumy 2:a6c2f346bca5 135 ATTENTE
Asoumy 2:a6c2f346bca5 136 }
Asoumy 2:a6c2f346bca5 137 break;
Asoumy 4:c6e9b4449a5f 138 //////////////////////Mot de passe///////////////////////
Asoumy 4:c6e9b4449a5f 139
Asoumy 4:c6e9b4449a5f 140 case etat_mot_de_passe:
Asoumy 4:c6e9b4449a5f 141 if(affiche==1)
Asoumy 2:a6c2f346bca5 142 {
Asoumy 4:c6e9b4449a5f 143 MotDePasse ();
Asoumy 4:c6e9b4449a5f 144 affiche=0;
Asoumy 4:c6e9b4449a5f 145 password=0;
Asoumy 4:c6e9b4449a5f 146 }
Asoumy 4:c6e9b4449a5f 147 if (TOUCH2)
Asoumy 4:c6e9b4449a5f 148 {
Asoumy 4:c6e9b4449a5f 149 lcd.SetBackColor(LCD_COLOR_WHITE);
Asoumy 4:c6e9b4449a5f 150 lcd.SetTextColor(LCD_COLOR_BLACK);
Asoumy 4:c6e9b4449a5f 151 lcd.DisplayStringAt(180, LINE(1), (uint8_t *)"*",LEFT_MODE);
Asoumy 4:c6e9b4449a5f 152 password=2;}
Asoumy 4:c6e9b4449a5f 153 if(password==2&&TOUCH7)
Asoumy 4:c6e9b4449a5f 154 {
Asoumy 4:c6e9b4449a5f 155 lcd.SetBackColor(LCD_COLOR_WHITE);
Asoumy 4:c6e9b4449a5f 156 lcd.SetTextColor(LCD_COLOR_BLACK);
Asoumy 4:c6e9b4449a5f 157 lcd.DisplayStringAt(210, LINE(1), (uint8_t *)"*",LEFT_MODE);
Asoumy 4:c6e9b4449a5f 158 password=7;}
Asoumy 4:c6e9b4449a5f 159 if(password==7&&TOUCH5)
Asoumy 2:a6c2f346bca5 160 {
Asoumy 4:c6e9b4449a5f 161 lcd.SetBackColor(LCD_COLOR_WHITE);
Asoumy 4:c6e9b4449a5f 162 lcd.SetTextColor(LCD_COLOR_BLACK);
Asoumy 4:c6e9b4449a5f 163 lcd.DisplayStringAt(240, LINE(1), (uint8_t *)"*",LEFT_MODE);
Asoumy 4:c6e9b4449a5f 164 password=5;}
Asoumy 4:c6e9b4449a5f 165 if(password==5&&TOUCHVALID)
Asoumy 4:c6e9b4449a5f 166 {
Asoumy 4:c6e9b4449a5f 167 etat= etat1;
Asoumy 4:c6e9b4449a5f 168 affiche=1;
Asoumy 4:c6e9b4449a5f 169 ATTENTE
Asoumy 4:c6e9b4449a5f 170 }
Asoumy 4:c6e9b4449a5f 171
Asoumy 4:c6e9b4449a5f 172 if ( TOUCH1|| TOUCH3 || TOUCH4 || TOUCH6|| TOUCH8|| TOUCH9)
Asoumy 4:c6e9b4449a5f 173
Asoumy 4:c6e9b4449a5f 174 {
Asoumy 4:c6e9b4449a5f 175 lcd.SetBackColor(LCD_COLOR_WHITE);
Asoumy 4:c6e9b4449a5f 176 lcd.SetTextColor(LCD_COLOR_BLACK);
Asoumy 4:c6e9b4449a5f 177 lcd.DisplayStringAt(140, LINE(2), (uint8_t *)"pass invalid",LEFT_MODE);
Asoumy 4:c6e9b4449a5f 178 wait (1);
Asoumy 4:c6e9b4449a5f 179 affiche=1;
Asoumy 4:c6e9b4449a5f 180
Asoumy 4:c6e9b4449a5f 181 if(affiche==1)
Asoumy 4:c6e9b4449a5f 182 {
Asoumy 4:c6e9b4449a5f 183 MotDePasse ();
Asoumy 4:c6e9b4449a5f 184 affiche=0;
Asoumy 4:c6e9b4449a5f 185 password=0;
Asoumy 4:c6e9b4449a5f 186 }
Asoumy 4:c6e9b4449a5f 187 }
Asoumy 4:c6e9b4449a5f 188 if(TOUCHRETOUR)
Asoumy 4:c6e9b4449a5f 189 {
Asoumy 4:c6e9b4449a5f 190 etat= etat0;
Asoumy 4:c6e9b4449a5f 191 affiche=1;
Asoumy 4:c6e9b4449a5f 192 ATTENTE
Asoumy 4:c6e9b4449a5f 193 }
Asoumy 2:a6c2f346bca5 194 break;
Asoumy 2:a6c2f346bca5 195
Asoumy 4:c6e9b4449a5f 196 ////////////////////////////////////////////////////////
Asoumy 4:c6e9b4449a5f 197
Asoumy 2:a6c2f346bca5 198 case etat1:
Asoumy 2:a6c2f346bca5 199 if (affiche==1)
Asoumy 2:a6c2f346bca5 200 {
Asoumy 2:a6c2f346bca5 201 ATTENTE
Asoumy 2:a6c2f346bca5 202 EcranAdminis ();
Asoumy 4:c6e9b4449a5f 203
Asoumy 2:a6c2f346bca5 204 affiche=0;
Asoumy 2:a6c2f346bca5 205 }
Asoumy 2:a6c2f346bca5 206
Asoumy 2:a6c2f346bca5 207 if (TOUCHTIMEDATE)
Asoumy 2:a6c2f346bca5 208 {
Asoumy 4:c6e9b4449a5f 209 etat= etat2;
Asoumy 4:c6e9b4449a5f 210 affiche=1;
Asoumy 2:a6c2f346bca5 211 }
Asoumy 2:a6c2f346bca5 212 if (TOUCHFREQ)
Asoumy 2:a6c2f346bca5 213 {
Asoumy 2:a6c2f346bca5 214 etat= etat3;
Asoumy 2:a6c2f346bca5 215 affiche=1;
Asoumy 2:a6c2f346bca5 216 }
Asoumy 2:a6c2f346bca5 217 if (TOUCHAFFICHAGE)
Asoumy 2:a6c2f346bca5 218 {
Asoumy 4:c6e9b4449a5f 219 ATTENTE
Asoumy 4:c6e9b4449a5f 220 etat=Etat_ecran_affichage;
Asoumy 4:c6e9b4449a5f 221 affiche=1;
Asoumy 2:a6c2f346bca5 222 }
Asoumy 4:c6e9b4449a5f 223 if (TOUCHSHOWTIME)
Asoumy 4:c6e9b4449a5f 224 {
Asoumy 4:c6e9b4449a5f 225 reg_time();
Asoumy 4:c6e9b4449a5f 226 affiche=1;
Asoumy 4:c6e9b4449a5f 227 }
Asoumy 2:a6c2f346bca5 228 if (TOUCHRETOUR)
Asoumy 2:a6c2f346bca5 229 {
Asoumy 2:a6c2f346bca5 230 etat= etat0;
Asoumy 2:a6c2f346bca5 231 affiche=1;
Asoumy 2:a6c2f346bca5 232 ATTENTE;
Asoumy 2:a6c2f346bca5 233 }
Asoumy 2:a6c2f346bca5 234 break;
Asoumy 2:a6c2f346bca5 235
Asoumy 2:a6c2f346bca5 236 case etat2:
Asoumy 2:a6c2f346bca5 237 if (affiche==1)
Asoumy 2:a6c2f346bca5 238 {
Asoumy 2:a6c2f346bca5 239 Ecran2();
Asoumy 2:a6c2f346bca5 240 affiche=0;
Asoumy 2:a6c2f346bca5 241 }
Asoumy 2:a6c2f346bca5 242 if (TOUCHRETOUR)
Asoumy 2:a6c2f346bca5 243 {
Asoumy 2:a6c2f346bca5 244 etat= etat1;
Asoumy 2:a6c2f346bca5 245 affiche=1;
Asoumy 2:a6c2f346bca5 246 ATTENTE
Asoumy 2:a6c2f346bca5 247 }
Asoumy 2:a6c2f346bca5 248 if (TOUCHDAY)
Asoumy 2:a6c2f346bca5 249 {
Asoumy 2:a6c2f346bca5 250 etat= etat_reg_day;
Asoumy 2:a6c2f346bca5 251 affiche=1;
Asoumy 2:a6c2f346bca5 252 }
Asoumy 2:a6c2f346bca5 253 if (TOUCHMonth)
Asoumy 2:a6c2f346bca5 254 {
Asoumy 2:a6c2f346bca5 255 etat=etat_reg_month;
Asoumy 2:a6c2f346bca5 256 affiche=1;
Asoumy 2:a6c2f346bca5 257 }
Asoumy 2:a6c2f346bca5 258 if (TOUCHYear)
Asoumy 2:a6c2f346bca5 259 {
Asoumy 2:a6c2f346bca5 260 etat=etat_reg_year;
Asoumy 2:a6c2f346bca5 261 affiche=1;
Asoumy 2:a6c2f346bca5 262 }
Asoumy 2:a6c2f346bca5 263 if (TOUCHHour)
Asoumy 2:a6c2f346bca5 264 {
Asoumy 2:a6c2f346bca5 265 etat=etat_reg_hour;
Asoumy 2:a6c2f346bca5 266 affiche=1;
Asoumy 2:a6c2f346bca5 267 }
Asoumy 2:a6c2f346bca5 268 if (TOUCHMinute)
Asoumy 2:a6c2f346bca5 269 {
Asoumy 2:a6c2f346bca5 270 etat=etat_reg_minute;
Asoumy 2:a6c2f346bca5 271 affiche=1;
Asoumy 2:a6c2f346bca5 272 }
Asoumy 2:a6c2f346bca5 273 if (TOUCHRETOUR)
Asoumy 2:a6c2f346bca5 274 {
Asoumy 2:a6c2f346bca5 275 etat= etat1;
Asoumy 2:a6c2f346bca5 276 affiche=1;
Asoumy 2:a6c2f346bca5 277 ATTENTE
Asoumy 2:a6c2f346bca5 278 }
Asoumy 2:a6c2f346bca5 279 if (TOUCHSeconde)
Asoumy 2:a6c2f346bca5 280 {
Asoumy 2:a6c2f346bca5 281 time.tm_sec=0;
Asoumy 2:a6c2f346bca5 282 affiche=1;
Asoumy 4:c6e9b4449a5f 283 }
Asoumy 4:c6e9b4449a5f 284 if (TOUCHSHOWTIME)
Asoumy 4:c6e9b4449a5f 285 {
Asoumy 4:c6e9b4449a5f 286 reg_time();
Asoumy 4:c6e9b4449a5f 287 affiche=1;
Asoumy 4:c6e9b4449a5f 288 }
Asoumy 2:a6c2f346bca5 289 break;
Asoumy 2:a6c2f346bca5 290
Asoumy 2:a6c2f346bca5 291
Asoumy 2:a6c2f346bca5 292
Asoumy 2:a6c2f346bca5 293
Asoumy 4:c6e9b4449a5f 294
Asoumy 2:a6c2f346bca5 295 case etat_reg_day:
Asoumy 2:a6c2f346bca5 296 if (affiche==1)
Asoumy 2:a6c2f346bca5 297 {
Asoumy 2:a6c2f346bca5 298 Ecran2_Day();
Asoumy 2:a6c2f346bca5 299 affiche=0;
Asoumy 2:a6c2f346bca5 300 }
Asoumy 2:a6c2f346bca5 301
Asoumy 2:a6c2f346bca5 302 if(TOUCHPlus){
Asoumy 4:c6e9b4449a5f 303 day=day+1;
Asoumy 2:a6c2f346bca5 304 ATTENTE
Asoumy 2:a6c2f346bca5 305 Ecran2_Day();
Asoumy 4:c6e9b4449a5f 306 if(day>30) day=0;
Asoumy 2:a6c2f346bca5 307 }
Asoumy 2:a6c2f346bca5 308 if(TOUCHMoins)
Asoumy 2:a6c2f346bca5 309 {
Asoumy 4:c6e9b4449a5f 310 day=day-1;
Asoumy 2:a6c2f346bca5 311 wait (0.3);
Asoumy 2:a6c2f346bca5 312 Ecran2_Day();
Asoumy 4:c6e9b4449a5f 313 if(day<2) day=32;
Asoumy 2:a6c2f346bca5 314 }
Asoumy 2:a6c2f346bca5 315 if ( (TOUCHOK)||(TOUCHRETOUR) )
Asoumy 2:a6c2f346bca5 316 {
Asoumy 2:a6c2f346bca5 317 etat= etat2;
Asoumy 2:a6c2f346bca5 318 affiche=1;
Asoumy 2:a6c2f346bca5 319 ATTENTE
Asoumy 2:a6c2f346bca5 320 }
Asoumy 2:a6c2f346bca5 321 break;
Asoumy 2:a6c2f346bca5 322
Asoumy 2:a6c2f346bca5 323 case etat_reg_month:
Asoumy 2:a6c2f346bca5 324 if (affiche==1){
Asoumy 2:a6c2f346bca5 325 Ecran2_Month();
Asoumy 2:a6c2f346bca5 326 affiche=0;
Asoumy 2:a6c2f346bca5 327 }
Asoumy 2:a6c2f346bca5 328 if(TOUCHPlus)
Asoumy 2:a6c2f346bca5 329 {
Asoumy 4:c6e9b4449a5f 330 month=month+1;
Asoumy 2:a6c2f346bca5 331 ATTENTE
Asoumy 2:a6c2f346bca5 332 Ecran2_Month();
Asoumy 4:c6e9b4449a5f 333 if(month>11) month=0;
Asoumy 2:a6c2f346bca5 334 }
Asoumy 2:a6c2f346bca5 335 if(TOUCHMoins)
Asoumy 2:a6c2f346bca5 336 {
Asoumy 4:c6e9b4449a5f 337 month=month-1;
Asoumy 2:a6c2f346bca5 338 ATTENTE
Asoumy 2:a6c2f346bca5 339 Ecran2_Month();
Asoumy 4:c6e9b4449a5f 340 if(month<2) month=13;
Asoumy 2:a6c2f346bca5 341
Asoumy 2:a6c2f346bca5 342 }
Asoumy 2:a6c2f346bca5 343 if ( (TOUCHOK)|| (TOUCHRETOUR))
Asoumy 2:a6c2f346bca5 344 {
Asoumy 2:a6c2f346bca5 345 etat= etat2;
Asoumy 2:a6c2f346bca5 346 affiche=1;
Asoumy 2:a6c2f346bca5 347 ATTENTE
Asoumy 2:a6c2f346bca5 348 }
Asoumy 2:a6c2f346bca5 349
Asoumy 2:a6c2f346bca5 350 break;
Asoumy 2:a6c2f346bca5 351 case etat_reg_year:
Asoumy 2:a6c2f346bca5 352 if (affiche==1){
Asoumy 2:a6c2f346bca5 353 Ecran2_Year ();
Asoumy 2:a6c2f346bca5 354 affiche=0;
Asoumy 2:a6c2f346bca5 355 }
Asoumy 2:a6c2f346bca5 356
Asoumy 2:a6c2f346bca5 357 if(TOUCHPlus)
Asoumy 2:a6c2f346bca5 358 {
Asoumy 4:c6e9b4449a5f 359 year=year+1;
Asoumy 2:a6c2f346bca5 360 ATTENTE
Asoumy 2:a6c2f346bca5 361 Ecran2_Year();
Asoumy 4:c6e9b4449a5f 362 if(year>3000) year=2000;
Asoumy 2:a6c2f346bca5 363 }
Asoumy 2:a6c2f346bca5 364 if(TOUCHMoins)
Asoumy 2:a6c2f346bca5 365 {
Asoumy 4:c6e9b4449a5f 366 year=year-1;
Asoumy 2:a6c2f346bca5 367 ATTENTE
Asoumy 2:a6c2f346bca5 368 Ecran2_Year();
Asoumy 4:c6e9b4449a5f 369 if(year<2000) year=3000;
Asoumy 2:a6c2f346bca5 370 }
Asoumy 2:a6c2f346bca5 371 if ((TOUCHOK) ||(TOUCHRETOUR))
Asoumy 2:a6c2f346bca5 372 {
Asoumy 2:a6c2f346bca5 373 etat= etat2;
Asoumy 2:a6c2f346bca5 374 affiche=1;
Asoumy 2:a6c2f346bca5 375 ATTENTE
Asoumy 2:a6c2f346bca5 376 }
Asoumy 2:a6c2f346bca5 377
Asoumy 2:a6c2f346bca5 378 break;
Asoumy 2:a6c2f346bca5 379
Asoumy 2:a6c2f346bca5 380 case etat_reg_hour:
Asoumy 2:a6c2f346bca5 381 if (affiche==1){
Asoumy 2:a6c2f346bca5 382 affiche=0;
Asoumy 2:a6c2f346bca5 383 Ecran2_Hour();
Asoumy 2:a6c2f346bca5 384 }
Asoumy 2:a6c2f346bca5 385
Asoumy 2:a6c2f346bca5 386 if(TOUCHPlus){
Asoumy 4:c6e9b4449a5f 387 hour=hour+1;
Asoumy 2:a6c2f346bca5 388 ATTENTE
Asoumy 2:a6c2f346bca5 389 Ecran2_Hour();
Asoumy 4:c6e9b4449a5f 390 if(hour>22) hour=0;
Asoumy 2:a6c2f346bca5 391 }
Asoumy 2:a6c2f346bca5 392 if(TOUCHMoins){
Asoumy 4:c6e9b4449a5f 393 hour=hour-1;
Asoumy 2:a6c2f346bca5 394 ATTENTE
Asoumy 2:a6c2f346bca5 395 Ecran2_Hour();
Asoumy 4:c6e9b4449a5f 396 if(hour<1) hour=24;
Asoumy 2:a6c2f346bca5 397 }
Asoumy 2:a6c2f346bca5 398
Asoumy 2:a6c2f346bca5 399 if ((TOUCHOK)||(TOUCHRETOUR)){
Asoumy 2:a6c2f346bca5 400 etat= etat2;
Asoumy 2:a6c2f346bca5 401 affiche=1;
Asoumy 2:a6c2f346bca5 402 ATTENTE
Asoumy 2:a6c2f346bca5 403 }
Asoumy 2:a6c2f346bca5 404 break;
Asoumy 2:a6c2f346bca5 405
Asoumy 2:a6c2f346bca5 406
Asoumy 2:a6c2f346bca5 407 case etat_reg_minute:
Asoumy 2:a6c2f346bca5 408 if (affiche==1)
Asoumy 2:a6c2f346bca5 409 { Ecran2_Minutes();
Asoumy 2:a6c2f346bca5 410 affiche=0;
Asoumy 2:a6c2f346bca5 411 }
Asoumy 2:a6c2f346bca5 412
Asoumy 2:a6c2f346bca5 413 if(TOUCHPlus)
Asoumy 2:a6c2f346bca5 414 {
Asoumy 4:c6e9b4449a5f 415 min=min+1;
Asoumy 2:a6c2f346bca5 416 ATTENTE
Asoumy 2:a6c2f346bca5 417 Ecran2_Minutes();
Asoumy 4:c6e9b4449a5f 418 if(min>58) min=0;
Asoumy 2:a6c2f346bca5 419 }
Asoumy 2:a6c2f346bca5 420 if(TOUCHMoins)
Asoumy 2:a6c2f346bca5 421 {
Asoumy 4:c6e9b4449a5f 422 min=min-1;
Asoumy 2:a6c2f346bca5 423 wait (0.3);
Asoumy 2:a6c2f346bca5 424 Ecran2_Minutes();
Asoumy 4:c6e9b4449a5f 425 if(min>2) min=59;
Asoumy 2:a6c2f346bca5 426 }
Asoumy 2:a6c2f346bca5 427 if ((TOUCHOK) || (TOUCHRETOUR)){
Asoumy 2:a6c2f346bca5 428 etat= etat2;
Asoumy 2:a6c2f346bca5 429 affiche=1;
Asoumy 2:a6c2f346bca5 430 ATTENTE
Asoumy 2:a6c2f346bca5 431 }
Asoumy 2:a6c2f346bca5 432 break;
Asoumy 2:a6c2f346bca5 433 case etat3:
Asoumy 2:a6c2f346bca5 434 if (affiche==1)
Asoumy 2:a6c2f346bca5 435 {
Asoumy 2:a6c2f346bca5 436 Ecran3();
Asoumy 2:a6c2f346bca5 437 affiche=0;
Asoumy 4:c6e9b4449a5f 438 }
Asoumy 4:c6e9b4449a5f 439
Asoumy 4:c6e9b4449a5f 440 if(TOUCHAcquire)
Asoumy 4:c6e9b4449a5f 441 {
Asoumy 4:c6e9b4449a5f 442 printf("debut d'acquisition!\n");
Asoumy 4:c6e9b4449a5f 443
Asoumy 4:c6e9b4449a5f 444 mkdir("/sd/mydir", 0777);
Asoumy 4:c6e9b4449a5f 445
Asoumy 4:c6e9b4449a5f 446 FILE *fp = fopen("/sd/mydir/Aquisition panneau.txt", "w");
Asoumy 4:c6e9b4449a5f 447 if(fp == NULL) {
Asoumy 4:c6e9b4449a5f 448 error("Could not open file for write\n");
Asoumy 4:c6e9b4449a5f 449 }
Asoumy 4:c6e9b4449a5f 450 fprintf(fp,"valeur d'irradiation %f\n",Vpan.read()*3.3);
Asoumy 4:c6e9b4449a5f 451 fprintf(fp," valeur tension panneau %f\n",Ipan.read()*3.3);
Asoumy 4:c6e9b4449a5f 452 fprintf(fp," valeur temperature panneau %f\n",Tpan.read()*3.3);
Asoumy 4:c6e9b4449a5f 453 fprintf(fp," valeur irradiation panneau %f\n",Irr.read()*3.3);
Asoumy 4:c6e9b4449a5f 454 fprintf(fp," valeur tension batterie %f\n",Vbat.read()*3.3);
Asoumy 4:c6e9b4449a5f 455 fprintf(fp," valeur courant batterie %f\n",Ibat.read()*3.3);
Asoumy 4:c6e9b4449a5f 456 fclose(fp);
Asoumy 4:c6e9b4449a5f 457
Asoumy 4:c6e9b4449a5f 458 printf("acquisition reussi!\n");
Asoumy 4:c6e9b4449a5f 459
Asoumy 4:c6e9b4449a5f 460 }
Asoumy 4:c6e9b4449a5f 461 if (TOUCHSHOWTIME)
Asoumy 4:c6e9b4449a5f 462 {
Asoumy 4:c6e9b4449a5f 463 reg_time();
Asoumy 4:c6e9b4449a5f 464 affiche=1;
Asoumy 4:c6e9b4449a5f 465 }
Asoumy 2:a6c2f346bca5 466 if (TOUCHRETOUR)
Asoumy 2:a6c2f346bca5 467 {
Asoumy 2:a6c2f346bca5 468 etat= etat1;
Asoumy 2:a6c2f346bca5 469 affiche=1;
Asoumy 2:a6c2f346bca5 470 ATTENTE
Asoumy 2:a6c2f346bca5 471 }
Asoumy 2:a6c2f346bca5 472 break;
Asoumy 4:c6e9b4449a5f 473 /////////////////
Asoumy 4:c6e9b4449a5f 474 case Etat_ecran_affichage:
Asoumy 4:c6e9b4449a5f 475 if (((Vpan.read())||(Ipan.read())||(Tpan.read())||(Irr.read())||(Vbat.read())||(Ibat.read()))&&affiche==1)
Asoumy 2:a6c2f346bca5 476 {
Asoumy 4:c6e9b4449a5f 477 EcranUtilis_ok();
Asoumy 4:c6e9b4449a5f 478 affiche=0;
Asoumy 4:c6e9b4449a5f 479
Asoumy 4:c6e9b4449a5f 480 } if(~((Vpan.read())||(Ipan.read())||(Tpan.read())||(Irr.read())||(Vbat.read())||(Ibat.read()))&&affiche==1)
Asoumy 4:c6e9b4449a5f 481 {
Asoumy 4:c6e9b4449a5f 482 EcranUtilis_fail();
Asoumy 4:c6e9b4449a5f 483 affiche=0;
Asoumy 4:c6e9b4449a5f 484 }
Asoumy 4:c6e9b4449a5f 485 if (TOUCHSHOWTIME)
Asoumy 4:c6e9b4449a5f 486 {
Asoumy 4:c6e9b4449a5f 487 reg_time();
Asoumy 4:c6e9b4449a5f 488 affiche=1;
Asoumy 4:c6e9b4449a5f 489 }
Asoumy 4:c6e9b4449a5f 490 if (TOUCHRETOUR)
Asoumy 2:a6c2f346bca5 491 {
Asoumy 2:a6c2f346bca5 492 etat= etat1;
Asoumy 2:a6c2f346bca5 493 affiche=1;
Asoumy 2:a6c2f346bca5 494 ATTENTE
Asoumy 2:a6c2f346bca5 495 }
Asoumy 2:a6c2f346bca5 496 break;
Asoumy 4:c6e9b4449a5f 497 /////////////
Asoumy 4:c6e9b4449a5f 498 case Etat_ecranUtilis:
Asoumy 4:c6e9b4449a5f 499 if (((Vpan.read())||(Ipan.read())||(Tpan.read())||(Irr.read())||(Vbat.read())||(Ibat.read()))&&affiche==1)
Asoumy 4:c6e9b4449a5f 500 {
Asoumy 4:c6e9b4449a5f 501 EcranUtilis_ok();
Asoumy 4:c6e9b4449a5f 502 affiche=0;
Asoumy 4:c6e9b4449a5f 503
Asoumy 4:c6e9b4449a5f 504 }else if(affiche==1){
Asoumy 4:c6e9b4449a5f 505 EcranUtilis_fail();
Asoumy 4:c6e9b4449a5f 506 affiche=0;
Asoumy 4:c6e9b4449a5f 507 }
Asoumy 4:c6e9b4449a5f 508 if (TOUCHSHOWTIME)
Asoumy 4:c6e9b4449a5f 509 {
Asoumy 4:c6e9b4449a5f 510 reg_time();
Asoumy 4:c6e9b4449a5f 511 affiche=1;
Asoumy 4:c6e9b4449a5f 512 }
Asoumy 4:c6e9b4449a5f 513 if (TOUCHRETOUR)
Asoumy 4:c6e9b4449a5f 514 {
Asoumy 4:c6e9b4449a5f 515 etat= etat0;
Asoumy 4:c6e9b4449a5f 516 affiche=1;
Asoumy 4:c6e9b4449a5f 517 ATTENTE
Asoumy 4:c6e9b4449a5f 518 }
Asoumy 4:c6e9b4449a5f 519 break;
Asoumy 2:a6c2f346bca5 520 }
Asoumy 2:a6c2f346bca5 521 }
Asoumy 2:a6c2f346bca5 522 }
Asoumy 2:a6c2f346bca5 523
Asoumy 2:a6c2f346bca5 524