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: mbed ID12RFID SDFileSystem
main.cpp
00001 #include "mbed.h" 00002 #include "mbed_genie.h" 00003 #include "eeprom_flash.h" 00004 #include "SDFileSystem.h" 00005 #include "ID12RFID.h" 00006 00007 Serial pc(USBTX, USBRX); 00008 ID12RFID rfid(PA_10); 00009 00010 DigitalOut myled(LED1); 00011 DigitalOut led1(PA_8); 00012 DigitalOut led2(PB_14); 00013 DigitalOut led3(PB_11); 00014 DigitalOut led4(PA_11); 00015 DigitalOut led5(PA_12); 00016 DigitalOut led6(PC_5); 00017 DigitalOut led7(PC_6); 00018 DigitalOut led8(PC_8); 00019 DigitalOut ledmasse(PB_3); 00020 00021 int flag_contraste; 00022 int valeur_clavier; 00023 int i; 00024 unsigned int lecture; 00025 int chrono = 99; 00026 int led = 99; 00027 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}; 00028 int code1 = 49; 00029 int code2 = 50; 00030 int code3 = 51; 00031 int y = 15; 00032 int flag = 0; 00033 int adressetempo = 0x0000; 00034 int adresserfid = 0x00000000; 00035 unsigned int tempo1, tempo2, tempo3, tempo4, tempo5, tempo6, tempo7,tempo8, rfid1, rfid2, rfid3, rfid4, rfid5; 00036 00037 00038 void enableEEPROMWriting() 00039 { 00040 HAL_StatusTypeDef status = HAL_FLASH_Unlock(); 00041 FLASH_PageErase(EEPROM_START_ADDRESS); // required to re-write 00042 CLEAR_BIT(FLASH->CR, FLASH_CR_PER); // Bug fix: bit PER has been set in Flash_PageErase(), must clear it here 00043 } 00044 00045 void disableEEPROMWriting() 00046 { 00047 HAL_FLASH_Lock(); 00048 } 00049 00050 HAL_StatusTypeDef writeEEPROMWord(uint32_t address, uint32_t data) 00051 { 00052 HAL_StatusTypeDef status; 00053 address = address + EEPROM_START_ADDRESS; 00054 status = HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, address, data); 00055 return status; 00056 } 00057 00058 uint32_t readEEPROMWord(uint32_t address) 00059 { 00060 uint32_t val = 0; 00061 address = address + EEPROM_START_ADDRESS; 00062 val = *(__IO uint32_t*)address; 00063 return val; 00064 } 00065 00066 void myGenieEventHandler(void) 00067 { 00068 genieFrame Event; 00069 genieDequeueEvent(&Event); 00070 if(Event.reportObject.cmd == GENIE_REPORT_EVENT) 00071 { 00072 if (Event.reportObject.object == GENIE_OBJ_KEYBOARD) 00073 { 00074 if (Event.reportObject.index == 0) 00075 { 00076 valeur_clavier = Event.reportObject.data_lsb; 00077 printf("%c\n\r", valeur_clavier); 00078 if ((valeur_clavier == code1) || (valeur_clavier== code2) || (valeur_clavier == code3)) 00079 { 00080 printf("Acces autorise\n\r"); 00081 } 00082 else 00083 { 00084 printf("Acces refuse\n\r"); 00085 } 00086 } 00087 } 00088 if (Event.reportObject.object == GENIE_OBJ_4DBUTTON) 00089 { 00090 if (Event.reportObject.index == 3) //Start 00091 { 00092 printf("Depart\n\r"); 00093 flag=1; 00094 } 00095 if (Event.reportObject.index == 5) //Stop 00096 { 00097 printf("Stop\n\r"); 00098 flag=0; 00099 } 00100 /*if (Event.reportObject.index == 8) // Contraste + 00101 { 00102 if (y<15) 00103 { 00104 y++; 00105 printf("Contraste=%d\r\n",y); 00106 flag_contraste=1; 00107 } 00108 genieWriteContrast(y); 00109 } 00110 if (Event.reportObject.index == 7) // Contraste - 00111 { 00112 if (y>0) 00113 { 00114 y--; 00115 printf("Contraste=%d\r\n",y); 00116 flag_contraste=1; 00117 } 00118 genieWriteContrast(y); 00119 }*/ 00120 if (Event.reportObject.index == 6) //Lecture tempo 00121 { 00122 SDFileSystem sd(PA_7, PA_6, PA_5, PB_6, "sd"); 00123 char numberstring[100]; 00124 FILE *fp = fopen("/sd/valeur_temporisation.txt", "r"); 00125 fgets(numberstring, 100, fp); 00126 00127 if(fp == NULL) 00128 { 00129 error("Impossible d'ouvrir le fichier pour la lecture\n\r"); 00130 fclose(fp); 00131 } 00132 else 00133 { 00134 printf("Lecture temporisation\n\r"); 00135 enableEEPROMWriting(); 00136 sscanf(numberstring, "%d", &tempo1); 00137 writeEEPROMWord(adressetempo, tempo1); 00138 lecture=readEEPROMWord(adressetempo); 00139 printf ("eeprom: %d\n\r",lecture); 00140 printf ("carte : %d\n\r",tempo1); 00141 sscanf(numberstring+3, "%d", &tempo2); 00142 writeEEPROMWord(adressetempo+4, tempo2); 00143 lecture=readEEPROMWord(adressetempo+4); 00144 printf ("eeprom: %d\n\r",lecture); 00145 printf ("carte : %d\n\r",tempo2); 00146 sscanf(numberstring+6, "%d", &tempo3); 00147 writeEEPROMWord(adressetempo+8, tempo3); 00148 lecture=readEEPROMWord(adressetempo+8); 00149 printf ("eeprom: %d\n\r",lecture); 00150 printf ("carte : %d\n\r",tempo3); 00151 sscanf(numberstring+9, "%d", &tempo4); 00152 writeEEPROMWord(adressetempo+12, tempo4); 00153 lecture=readEEPROMWord(adressetempo+12); 00154 printf ("eeprom: %d\n\r",lecture); 00155 printf ("carte : %d\n\r",tempo4); 00156 sscanf(numberstring+11, "%d", &tempo5); 00157 writeEEPROMWord(adressetempo+16, tempo5); 00158 lecture=readEEPROMWord(adressetempo+16); 00159 printf ("eeprom: %d\n\r",lecture); 00160 printf ("carte : %d\n\r",tempo5); 00161 sscanf(numberstring+14, "%d", &tempo6); 00162 writeEEPROMWord(adressetempo+20, tempo6); 00163 lecture=readEEPROMWord(adressetempo+20); 00164 printf ("eeprom: %d\n\r",lecture); 00165 printf ("carte : %d\n\r",tempo6); 00166 sscanf(numberstring+16, "%d", &tempo7); 00167 writeEEPROMWord(adressetempo+24, tempo7); 00168 lecture=readEEPROMWord(adressetempo+24); 00169 printf ("eeprom: %d\n\r",lecture); 00170 printf ("carte : %d\n\r",tempo7); 00171 sscanf(numberstring+18, "%d", &tempo8); 00172 writeEEPROMWord(adressetempo+28, tempo8); 00173 lecture=readEEPROMWord(adressetempo+28); 00174 printf ("eeprom: %d\n\r",lecture); 00175 printf ("carte : %d\n\r",tempo8); 00176 fclose(fp); 00177 printf("Lecture finie!\n\r"); 00178 disableEEPROMWriting(); 00179 } 00180 } 00181 if (Event.reportObject.index == 7) //Lecture code RFID 00182 { 00183 SDFileSystem sd(PA_7, PA_6, PA_5, PB_6, "sd"); 00184 char numberrfid[100]; 00185 FILE *fp1 = fopen("/sd/valeur_rfid.txt", "r"); 00186 fgets(numberrfid, 100, fp1); 00187 00188 if(fp1 == NULL) 00189 { 00190 error("Impossible d'ouvrir le fichier pour la lecture\n\r"); 00191 } 00192 flag = 2; 00193 printf("Lecture code rfid\n\r"); 00194 enableEEPROMWriting(); 00195 sscanf(numberrfid, "%d", &rfid1); 00196 writeEEPROMWord(adresserfid, rfid1); 00197 lecture=readEEPROMWord(adresserfid); 00198 printf ("eeprom: %d\n\r",lecture); 00199 printf ("carte : %d\n\r", rfid1); 00200 sscanf(numberrfid+8, "%d", &rfid2); 00201 writeEEPROMWord(adresserfid+8, rfid2); 00202 lecture=readEEPROMWord(adresserfid+8); 00203 printf ("eeprom: %d\n\r",lecture);; 00204 printf ("carte : %d\n\r", rfid2); 00205 sscanf(numberrfid+17, "%d", &rfid3); 00206 writeEEPROMWord(adresserfid+16, rfid3); 00207 lecture=readEEPROMWord(adresserfid+16); 00208 printf ("eeprom: %d\n\r",lecture); 00209 printf ("carte : %d\n\r", rfid3); 00210 sscanf(numberrfid+25, "%d", &rfid4); 00211 writeEEPROMWord(adresserfid+24, rfid4); 00212 lecture=readEEPROMWord(adresserfid+24); 00213 printf ("eeprom: %d\n\r",lecture); 00214 printf ("carte : %d\n\r", rfid4); 00215 sscanf(numberrfid+34, "%d", &rfid5); 00216 writeEEPROMWord(adresserfid+32, rfid5); 00217 lecture=readEEPROMWord(adresserfid+32); 00218 printf ("eeprom: %d\n\r",lecture); 00219 printf ("carte : %d\n\r", rfid5); 00220 fclose(fp1); 00221 printf("Lecture finie!\n\r"); 00222 disableEEPROMWriting(); 00223 } 00224 } 00225 } 00226 return; 00227 } 00228 int main() 00229 { 00230 pc.baud(9600); 00231 ledmasse = 1; 00232 SetupGenie(); 00233 genieAttachEventHandler(&myGenieEventHandler); 00234 genieWriteContrast(15); 00235 00236 while(1) 00237 { 00238 if (flag == 1) 00239 { 00240 led1 = 1; 00241 led2 = 1; 00242 led3 = 1; 00243 led4 = 1; 00244 led5 = 0; 00245 led6 = 0; 00246 led7 = 0; 00247 led8 = 0; 00248 wait(1); 00249 if (chrono == 0) 00250 { 00251 chrono=tab[i]; 00252 i=i+1; 00253 } 00254 } 00255 00256 else if(flag == 0) 00257 { 00258 led1 = 0; 00259 led2 = 0; 00260 led3 = 0; 00261 led4 = 0; 00262 led5 = 1; 00263 led6 = 1; 00264 led7 = 1; 00265 led8 = 1; 00266 chrono=tab[i]; 00267 wait(1); 00268 } 00269 else if(flag == 2) 00270 { 00271 if(rfid.read() == rfid1) 00272 { 00273 printf("RFID Tag number : %d\n\r", rfid.read()); 00274 genieWriteObject(GENIE_OBJ_LED, 0x00, 1); 00275 } 00276 } 00277 /*if(rfid.read() == rfid1) 00278 { 00279 genieWriteObject(GENIE_OBJ_LED, 0x00, chrono); 00280 }*/ 00281 } 00282 }
Generated on Fri Jul 15 2022 15:37:41 by
1.7.2