programme bts bruchet descroix duhautois

Dependencies:   mbed ID12RFID SDFileSystem

Committer:
valentinbruchet
Date:
Wed May 05 08:13:43 2021 +0000
Revision:
5:e104ec24b3fa
Child:
6:4f5634f6a565
Programme BTS;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
valentinbruchet 5:e104ec24b3fa 1 #include "mbed.h"
valentinbruchet 5:e104ec24b3fa 2 #include "mbed_genie.h"
valentinbruchet 5:e104ec24b3fa 3 #include "eeprom_flash.h"
valentinbruchet 5:e104ec24b3fa 4 #include "SDFileSystem.h"
valentinbruchet 5:e104ec24b3fa 5 #include "ID12RFID.h"
valentinbruchet 5:e104ec24b3fa 6
valentinbruchet 5:e104ec24b3fa 7 Serial pc(USBTX, USBRX);
valentinbruchet 5:e104ec24b3fa 8 ID12RFID rfid(PA_10);
valentinbruchet 5:e104ec24b3fa 9
valentinbruchet 5:e104ec24b3fa 10 DigitalOut myled(LED1);
valentinbruchet 5:e104ec24b3fa 11 DigitalOut led1(PA_8);
valentinbruchet 5:e104ec24b3fa 12 DigitalOut led2(PB_14);
valentinbruchet 5:e104ec24b3fa 13 DigitalOut led3(PB_11);
valentinbruchet 5:e104ec24b3fa 14 DigitalOut led4(PA_11);
valentinbruchet 5:e104ec24b3fa 15 DigitalOut led5(PA_12);
valentinbruchet 5:e104ec24b3fa 16 DigitalOut led6(PC_5);
valentinbruchet 5:e104ec24b3fa 17 DigitalOut led7(PC_6);
valentinbruchet 5:e104ec24b3fa 18 DigitalOut led8(PC_8);
valentinbruchet 5:e104ec24b3fa 19 DigitalOut ledmasse(PB_3);
valentinbruchet 5:e104ec24b3fa 20
valentinbruchet 5:e104ec24b3fa 21 int flag_contraste;
valentinbruchet 5:e104ec24b3fa 22 int valeur_clavier;
valentinbruchet 5:e104ec24b3fa 23 int i;
valentinbruchet 5:e104ec24b3fa 24 unsigned int lecture;
valentinbruchet 5:e104ec24b3fa 25 int chrono = 99;
valentinbruchet 5:e104ec24b3fa 26 int led = 99;
valentinbruchet 5:e104ec24b3fa 27 int tab[40] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40};
valentinbruchet 5:e104ec24b3fa 28 int code1 = 49;
valentinbruchet 5:e104ec24b3fa 29 int code2 = 50;
valentinbruchet 5:e104ec24b3fa 30 int code3 = 51;
valentinbruchet 5:e104ec24b3fa 31 int y = 15;
valentinbruchet 5:e104ec24b3fa 32 int flag = 0;
valentinbruchet 5:e104ec24b3fa 33 int adressetempo = 0x0000;
valentinbruchet 5:e104ec24b3fa 34 int adresserfid = 0x00000000;
valentinbruchet 5:e104ec24b3fa 35 unsigned int tempo1, tempo2, tempo3, tempo4, tempo5, tempo6, tempo7,tempo8, rfid1, rfid2, rfid3, rfid4, rfid5;
valentinbruchet 5:e104ec24b3fa 36
valentinbruchet 5:e104ec24b3fa 37
valentinbruchet 5:e104ec24b3fa 38 void enableEEPROMWriting()
valentinbruchet 5:e104ec24b3fa 39 {
valentinbruchet 5:e104ec24b3fa 40 HAL_StatusTypeDef status = HAL_FLASH_Unlock();
valentinbruchet 5:e104ec24b3fa 41 FLASH_PageErase(EEPROM_START_ADDRESS); // required to re-write
valentinbruchet 5:e104ec24b3fa 42 CLEAR_BIT(FLASH->CR, FLASH_CR_PER); // Bug fix: bit PER has been set in Flash_PageErase(), must clear it here
valentinbruchet 5:e104ec24b3fa 43 }
valentinbruchet 5:e104ec24b3fa 44
valentinbruchet 5:e104ec24b3fa 45 void disableEEPROMWriting()
valentinbruchet 5:e104ec24b3fa 46 {
valentinbruchet 5:e104ec24b3fa 47 HAL_FLASH_Lock();
valentinbruchet 5:e104ec24b3fa 48 }
valentinbruchet 5:e104ec24b3fa 49
valentinbruchet 5:e104ec24b3fa 50 HAL_StatusTypeDef writeEEPROMWord(uint32_t address, uint32_t data)
valentinbruchet 5:e104ec24b3fa 51 {
valentinbruchet 5:e104ec24b3fa 52 HAL_StatusTypeDef status;
valentinbruchet 5:e104ec24b3fa 53 address = address + EEPROM_START_ADDRESS;
valentinbruchet 5:e104ec24b3fa 54 status = HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, address, data);
valentinbruchet 5:e104ec24b3fa 55 return status;
valentinbruchet 5:e104ec24b3fa 56 }
valentinbruchet 5:e104ec24b3fa 57
valentinbruchet 5:e104ec24b3fa 58 uint32_t readEEPROMWord(uint32_t address)
valentinbruchet 5:e104ec24b3fa 59 {
valentinbruchet 5:e104ec24b3fa 60 uint32_t val = 0;
valentinbruchet 5:e104ec24b3fa 61 address = address + EEPROM_START_ADDRESS;
valentinbruchet 5:e104ec24b3fa 62 val = *(__IO uint32_t*)address;
valentinbruchet 5:e104ec24b3fa 63 return val;
valentinbruchet 5:e104ec24b3fa 64 }
valentinbruchet 5:e104ec24b3fa 65
valentinbruchet 5:e104ec24b3fa 66 void myGenieEventHandler(void)
valentinbruchet 5:e104ec24b3fa 67 {
valentinbruchet 5:e104ec24b3fa 68 genieFrame Event;
valentinbruchet 5:e104ec24b3fa 69 genieDequeueEvent(&Event);
valentinbruchet 5:e104ec24b3fa 70 if(Event.reportObject.cmd == GENIE_REPORT_EVENT)
valentinbruchet 5:e104ec24b3fa 71 {
valentinbruchet 5:e104ec24b3fa 72 if (Event.reportObject.object == GENIE_OBJ_KEYBOARD)
valentinbruchet 5:e104ec24b3fa 73 {
valentinbruchet 5:e104ec24b3fa 74 if (Event.reportObject.index == 0)
valentinbruchet 5:e104ec24b3fa 75 {
valentinbruchet 5:e104ec24b3fa 76 valeur_clavier = Event.reportObject.data_lsb;
valentinbruchet 5:e104ec24b3fa 77 printf("%c\n\r", valeur_clavier);
valentinbruchet 5:e104ec24b3fa 78 if ((valeur_clavier == code1) || (valeur_clavier== code2) || (valeur_clavier == code3))
valentinbruchet 5:e104ec24b3fa 79 {
valentinbruchet 5:e104ec24b3fa 80 printf("Acces autorise\n\r");
valentinbruchet 5:e104ec24b3fa 81 }
valentinbruchet 5:e104ec24b3fa 82 else
valentinbruchet 5:e104ec24b3fa 83 {
valentinbruchet 5:e104ec24b3fa 84 printf("Acces refuse\n\r");
valentinbruchet 5:e104ec24b3fa 85 }
valentinbruchet 5:e104ec24b3fa 86 }
valentinbruchet 5:e104ec24b3fa 87 }
valentinbruchet 5:e104ec24b3fa 88 if (Event.reportObject.object == GENIE_OBJ_4DBUTTON)
valentinbruchet 5:e104ec24b3fa 89 {
valentinbruchet 5:e104ec24b3fa 90 if (Event.reportObject.index == 3) //Start
valentinbruchet 5:e104ec24b3fa 91 {
valentinbruchet 5:e104ec24b3fa 92 printf("Depart\n\r");
valentinbruchet 5:e104ec24b3fa 93 flag=1;
valentinbruchet 5:e104ec24b3fa 94 }
valentinbruchet 5:e104ec24b3fa 95 if (Event.reportObject.index == 5) //Stop
valentinbruchet 5:e104ec24b3fa 96 {
valentinbruchet 5:e104ec24b3fa 97 printf("Stop\n\r");
valentinbruchet 5:e104ec24b3fa 98 flag=0;
valentinbruchet 5:e104ec24b3fa 99 }
valentinbruchet 5:e104ec24b3fa 100 /*if (Event.reportObject.index == 8) // Contraste +
valentinbruchet 5:e104ec24b3fa 101 {
valentinbruchet 5:e104ec24b3fa 102 if (y<15)
valentinbruchet 5:e104ec24b3fa 103 {
valentinbruchet 5:e104ec24b3fa 104 y++;
valentinbruchet 5:e104ec24b3fa 105 printf("Contraste=%d\r\n",y);
valentinbruchet 5:e104ec24b3fa 106 flag_contraste=1;
valentinbruchet 5:e104ec24b3fa 107 }
valentinbruchet 5:e104ec24b3fa 108 genieWriteContrast(y);
valentinbruchet 5:e104ec24b3fa 109 }
valentinbruchet 5:e104ec24b3fa 110 if (Event.reportObject.index == 7) // Contraste -
valentinbruchet 5:e104ec24b3fa 111 {
valentinbruchet 5:e104ec24b3fa 112 if (y>0)
valentinbruchet 5:e104ec24b3fa 113 {
valentinbruchet 5:e104ec24b3fa 114 y--;
valentinbruchet 5:e104ec24b3fa 115 printf("Contraste=%d\r\n",y);
valentinbruchet 5:e104ec24b3fa 116 flag_contraste=1;
valentinbruchet 5:e104ec24b3fa 117 }
valentinbruchet 5:e104ec24b3fa 118 genieWriteContrast(y);
valentinbruchet 5:e104ec24b3fa 119 }*/
valentinbruchet 5:e104ec24b3fa 120 if (Event.reportObject.index == 6) //Lecture tempo
valentinbruchet 5:e104ec24b3fa 121 {
valentinbruchet 5:e104ec24b3fa 122 SDFileSystem sd(PA_7, PA_6, PA_5, PB_6, "sd");
valentinbruchet 5:e104ec24b3fa 123 char numberstring[100];
valentinbruchet 5:e104ec24b3fa 124 FILE *fp = fopen("/sd/valeur_temporisation.txt", "r");
valentinbruchet 5:e104ec24b3fa 125 fgets(numberstring, 100, fp);
valentinbruchet 5:e104ec24b3fa 126
valentinbruchet 5:e104ec24b3fa 127 if(fp == NULL)
valentinbruchet 5:e104ec24b3fa 128 {
valentinbruchet 5:e104ec24b3fa 129 error("Impossible d'ouvrir le fichier pour la lecture\n\r");
valentinbruchet 5:e104ec24b3fa 130 fclose(fp);
valentinbruchet 5:e104ec24b3fa 131 }
valentinbruchet 5:e104ec24b3fa 132 else
valentinbruchet 5:e104ec24b3fa 133 {
valentinbruchet 5:e104ec24b3fa 134 printf("Lecture temporisation\n\r");
valentinbruchet 5:e104ec24b3fa 135 enableEEPROMWriting();
valentinbruchet 5:e104ec24b3fa 136 sscanf(numberstring, "%d", &tempo1);
valentinbruchet 5:e104ec24b3fa 137 writeEEPROMWord(adressetempo, tempo1);
valentinbruchet 5:e104ec24b3fa 138 lecture=readEEPROMWord(adressetempo);
valentinbruchet 5:e104ec24b3fa 139 printf ("eeprom: %d\n\r",lecture);
valentinbruchet 5:e104ec24b3fa 140 printf ("carte : %d\n\r",tempo1);
valentinbruchet 5:e104ec24b3fa 141 sscanf(numberstring+3, "%d", &tempo2);
valentinbruchet 5:e104ec24b3fa 142 writeEEPROMWord(adressetempo+4, tempo2);
valentinbruchet 5:e104ec24b3fa 143 lecture=readEEPROMWord(adressetempo+4);
valentinbruchet 5:e104ec24b3fa 144 printf ("eeprom: %d\n\r",lecture);
valentinbruchet 5:e104ec24b3fa 145 printf ("carte : %d\n\r",tempo2);
valentinbruchet 5:e104ec24b3fa 146 sscanf(numberstring+6, "%d", &tempo3);
valentinbruchet 5:e104ec24b3fa 147 writeEEPROMWord(adressetempo+8, tempo3);
valentinbruchet 5:e104ec24b3fa 148 lecture=readEEPROMWord(adressetempo+8);
valentinbruchet 5:e104ec24b3fa 149 printf ("eeprom: %d\n\r",lecture);
valentinbruchet 5:e104ec24b3fa 150 printf ("carte : %d\n\r",tempo3);
valentinbruchet 5:e104ec24b3fa 151 sscanf(numberstring+9, "%d", &tempo4);
valentinbruchet 5:e104ec24b3fa 152 writeEEPROMWord(adressetempo+12, tempo4);
valentinbruchet 5:e104ec24b3fa 153 lecture=readEEPROMWord(adressetempo+12);
valentinbruchet 5:e104ec24b3fa 154 printf ("eeprom: %d\n\r",lecture);
valentinbruchet 5:e104ec24b3fa 155 printf ("carte : %d\n\r",tempo4);
valentinbruchet 5:e104ec24b3fa 156 sscanf(numberstring+11, "%d", &tempo5);
valentinbruchet 5:e104ec24b3fa 157 writeEEPROMWord(adressetempo+16, tempo5);
valentinbruchet 5:e104ec24b3fa 158 lecture=readEEPROMWord(adressetempo+16);
valentinbruchet 5:e104ec24b3fa 159 printf ("eeprom: %d\n\r",lecture);
valentinbruchet 5:e104ec24b3fa 160 printf ("carte : %d\n\r",tempo5);
valentinbruchet 5:e104ec24b3fa 161 sscanf(numberstring+14, "%d", &tempo6);
valentinbruchet 5:e104ec24b3fa 162 writeEEPROMWord(adressetempo+20, tempo6);
valentinbruchet 5:e104ec24b3fa 163 lecture=readEEPROMWord(adressetempo+20);
valentinbruchet 5:e104ec24b3fa 164 printf ("eeprom: %d\n\r",lecture);
valentinbruchet 5:e104ec24b3fa 165 printf ("carte : %d\n\r",tempo6);
valentinbruchet 5:e104ec24b3fa 166 sscanf(numberstring+16, "%d", &tempo7);
valentinbruchet 5:e104ec24b3fa 167 writeEEPROMWord(adressetempo+24, tempo7);
valentinbruchet 5:e104ec24b3fa 168 lecture=readEEPROMWord(adressetempo+24);
valentinbruchet 5:e104ec24b3fa 169 printf ("eeprom: %d\n\r",lecture);
valentinbruchet 5:e104ec24b3fa 170 printf ("carte : %d\n\r",tempo7);
valentinbruchet 5:e104ec24b3fa 171 sscanf(numberstring+18, "%d", &tempo8);
valentinbruchet 5:e104ec24b3fa 172 writeEEPROMWord(adressetempo+28, tempo8);
valentinbruchet 5:e104ec24b3fa 173 lecture=readEEPROMWord(adressetempo+28);
valentinbruchet 5:e104ec24b3fa 174 printf ("eeprom: %d\n\r",lecture);
valentinbruchet 5:e104ec24b3fa 175 printf ("carte : %d\n\r",tempo8);
valentinbruchet 5:e104ec24b3fa 176 fclose(fp);
valentinbruchet 5:e104ec24b3fa 177 printf("Lecture finie!\n\r");
valentinbruchet 5:e104ec24b3fa 178 disableEEPROMWriting();
valentinbruchet 5:e104ec24b3fa 179 }
valentinbruchet 5:e104ec24b3fa 180 }
valentinbruchet 5:e104ec24b3fa 181 if (Event.reportObject.index == 7) //Lecture code RFID
valentinbruchet 5:e104ec24b3fa 182 {
valentinbruchet 5:e104ec24b3fa 183 SDFileSystem sd(PA_7, PA_6, PA_5, PB_6, "sd");
valentinbruchet 5:e104ec24b3fa 184 char numberrfid[100];
valentinbruchet 5:e104ec24b3fa 185 FILE *fp1 = fopen("/sd/valeur_rfid.txt", "r");
valentinbruchet 5:e104ec24b3fa 186 fgets(numberrfid, 100, fp1);
valentinbruchet 5:e104ec24b3fa 187
valentinbruchet 5:e104ec24b3fa 188 if(fp1 == NULL)
valentinbruchet 5:e104ec24b3fa 189 {
valentinbruchet 5:e104ec24b3fa 190 error("Impossible d'ouvrir le fichier pour la lecture\n\r");
valentinbruchet 5:e104ec24b3fa 191 }
valentinbruchet 5:e104ec24b3fa 192 flag = 2;
valentinbruchet 5:e104ec24b3fa 193 printf("Lecture code rfid\n\r");
valentinbruchet 5:e104ec24b3fa 194 enableEEPROMWriting();
valentinbruchet 5:e104ec24b3fa 195 sscanf(numberrfid, "%d", &rfid1);
valentinbruchet 5:e104ec24b3fa 196 writeEEPROMWord(adresserfid, rfid1);
valentinbruchet 5:e104ec24b3fa 197 lecture=readEEPROMWord(adresserfid);
valentinbruchet 5:e104ec24b3fa 198 printf ("eeprom: %d\n\r",lecture);
valentinbruchet 5:e104ec24b3fa 199 printf ("carte : %d\n\r", rfid1);
valentinbruchet 5:e104ec24b3fa 200 sscanf(numberrfid+8, "%d", &rfid2);
valentinbruchet 5:e104ec24b3fa 201 writeEEPROMWord(adresserfid+8, rfid2);
valentinbruchet 5:e104ec24b3fa 202 lecture=readEEPROMWord(adresserfid+8);
valentinbruchet 5:e104ec24b3fa 203 printf ("eeprom: %d\n\r",lecture);;
valentinbruchet 5:e104ec24b3fa 204 printf ("carte : %d\n\r", rfid2);
valentinbruchet 5:e104ec24b3fa 205 sscanf(numberrfid+17, "%d", &rfid3);
valentinbruchet 5:e104ec24b3fa 206 writeEEPROMWord(adresserfid+16, rfid3);
valentinbruchet 5:e104ec24b3fa 207 lecture=readEEPROMWord(adresserfid+16);
valentinbruchet 5:e104ec24b3fa 208 printf ("eeprom: %d\n\r",lecture);
valentinbruchet 5:e104ec24b3fa 209 printf ("carte : %d\n\r", rfid3);
valentinbruchet 5:e104ec24b3fa 210 sscanf(numberrfid+25, "%d", &rfid4);
valentinbruchet 5:e104ec24b3fa 211 writeEEPROMWord(adresserfid+24, rfid4);
valentinbruchet 5:e104ec24b3fa 212 lecture=readEEPROMWord(adresserfid+24);
valentinbruchet 5:e104ec24b3fa 213 printf ("eeprom: %d\n\r",lecture);
valentinbruchet 5:e104ec24b3fa 214 printf ("carte : %d\n\r", rfid4);
valentinbruchet 5:e104ec24b3fa 215 sscanf(numberrfid+34, "%d", &rfid5);
valentinbruchet 5:e104ec24b3fa 216 writeEEPROMWord(adresserfid+32, rfid5);
valentinbruchet 5:e104ec24b3fa 217 lecture=readEEPROMWord(adresserfid+32);
valentinbruchet 5:e104ec24b3fa 218 printf ("eeprom: %d\n\r",lecture);
valentinbruchet 5:e104ec24b3fa 219 printf ("carte : %d\n\r", rfid5);
valentinbruchet 5:e104ec24b3fa 220 fclose(fp1);
valentinbruchet 5:e104ec24b3fa 221 printf("Lecture finie!\n\r");
valentinbruchet 5:e104ec24b3fa 222 disableEEPROMWriting();
valentinbruchet 5:e104ec24b3fa 223 }
valentinbruchet 5:e104ec24b3fa 224 }
valentinbruchet 5:e104ec24b3fa 225 }
valentinbruchet 5:e104ec24b3fa 226 return;
valentinbruchet 5:e104ec24b3fa 227 }
valentinbruchet 5:e104ec24b3fa 228 int main()
valentinbruchet 5:e104ec24b3fa 229 {
valentinbruchet 5:e104ec24b3fa 230 pc.baud(9600);
valentinbruchet 5:e104ec24b3fa 231 ledmasse = 1;
valentinbruchet 5:e104ec24b3fa 232 SetupGenie();
valentinbruchet 5:e104ec24b3fa 233 genieAttachEventHandler(&myGenieEventHandler);
valentinbruchet 5:e104ec24b3fa 234 genieWriteContrast(15);
valentinbruchet 5:e104ec24b3fa 235
valentinbruchet 5:e104ec24b3fa 236 while(1)
valentinbruchet 5:e104ec24b3fa 237 {
valentinbruchet 5:e104ec24b3fa 238 if (flag == 1)
valentinbruchet 5:e104ec24b3fa 239 {
valentinbruchet 5:e104ec24b3fa 240 led1 = 1;
valentinbruchet 5:e104ec24b3fa 241 led2 = 1;
valentinbruchet 5:e104ec24b3fa 242 led3 = 1;
valentinbruchet 5:e104ec24b3fa 243 led4 = 1;
valentinbruchet 5:e104ec24b3fa 244 led5 = 0;
valentinbruchet 5:e104ec24b3fa 245 led6 = 0;
valentinbruchet 5:e104ec24b3fa 246 led7 = 0;
valentinbruchet 5:e104ec24b3fa 247 led8 = 0;
valentinbruchet 5:e104ec24b3fa 248 wait(1);
valentinbruchet 5:e104ec24b3fa 249 if (chrono == 0)
valentinbruchet 5:e104ec24b3fa 250 {
valentinbruchet 5:e104ec24b3fa 251 chrono=tab[i];
valentinbruchet 5:e104ec24b3fa 252 i=i+1;
valentinbruchet 5:e104ec24b3fa 253 }
valentinbruchet 5:e104ec24b3fa 254 }
valentinbruchet 5:e104ec24b3fa 255
valentinbruchet 5:e104ec24b3fa 256 else if(flag == 0)
valentinbruchet 5:e104ec24b3fa 257 {
valentinbruchet 5:e104ec24b3fa 258 led1 = 0;
valentinbruchet 5:e104ec24b3fa 259 led2 = 0;
valentinbruchet 5:e104ec24b3fa 260 led3 = 0;
valentinbruchet 5:e104ec24b3fa 261 led4 = 0;
valentinbruchet 5:e104ec24b3fa 262 led5 = 1;
valentinbruchet 5:e104ec24b3fa 263 led6 = 1;
valentinbruchet 5:e104ec24b3fa 264 led7 = 1;
valentinbruchet 5:e104ec24b3fa 265 led8 = 1;
valentinbruchet 5:e104ec24b3fa 266 chrono=tab[i];
valentinbruchet 5:e104ec24b3fa 267 wait(1);
valentinbruchet 5:e104ec24b3fa 268 }
valentinbruchet 5:e104ec24b3fa 269 else if(flag == 2)
valentinbruchet 5:e104ec24b3fa 270 {
valentinbruchet 5:e104ec24b3fa 271 if(rfid.read() == rfid1)
valentinbruchet 5:e104ec24b3fa 272 {
valentinbruchet 5:e104ec24b3fa 273 printf("RFID Tag number : %d\n\r", rfid.read());
valentinbruchet 5:e104ec24b3fa 274 genieWriteObject(GENIE_OBJ_LED, 0x00, 1);
valentinbruchet 5:e104ec24b3fa 275 }
valentinbruchet 5:e104ec24b3fa 276 }
valentinbruchet 5:e104ec24b3fa 277 /*if(rfid.read() == rfid1)
valentinbruchet 5:e104ec24b3fa 278 {
valentinbruchet 5:e104ec24b3fa 279 genieWriteObject(GENIE_OBJ_LED, 0x00, chrono);
valentinbruchet 5:e104ec24b3fa 280 }*/
valentinbruchet 5:e104ec24b3fa 281 }
valentinbruchet 5:e104ec24b3fa 282 }