programme bts bruchet descroix duhautois
Dependencies: mbed ID12RFID SDFileSystem
main.cpp
- Committer:
- valentinbruchet
- Date:
- 2021-05-05
- Revision:
- 5:e104ec24b3fa
- Child:
- 6:4f5634f6a565
File content as of revision 5:e104ec24b3fa:
#include "mbed.h" #include "mbed_genie.h" #include "eeprom_flash.h" #include "SDFileSystem.h" #include "ID12RFID.h" Serial pc(USBTX, USBRX); ID12RFID rfid(PA_10); DigitalOut myled(LED1); DigitalOut led1(PA_8); DigitalOut led2(PB_14); DigitalOut led3(PB_11); DigitalOut led4(PA_11); DigitalOut led5(PA_12); DigitalOut led6(PC_5); DigitalOut led7(PC_6); DigitalOut led8(PC_8); DigitalOut ledmasse(PB_3); int flag_contraste; int valeur_clavier; int i; unsigned int lecture; int chrono = 99; int led = 99; 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}; int code1 = 49; int code2 = 50; int code3 = 51; int y = 15; int flag = 0; int adressetempo = 0x0000; int adresserfid = 0x00000000; unsigned int tempo1, tempo2, tempo3, tempo4, tempo5, tempo6, tempo7,tempo8, rfid1, rfid2, rfid3, rfid4, rfid5; void enableEEPROMWriting() { HAL_StatusTypeDef status = HAL_FLASH_Unlock(); FLASH_PageErase(EEPROM_START_ADDRESS); // required to re-write CLEAR_BIT(FLASH->CR, FLASH_CR_PER); // Bug fix: bit PER has been set in Flash_PageErase(), must clear it here } void disableEEPROMWriting() { HAL_FLASH_Lock(); } HAL_StatusTypeDef writeEEPROMWord(uint32_t address, uint32_t data) { HAL_StatusTypeDef status; address = address + EEPROM_START_ADDRESS; status = HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, address, data); return status; } uint32_t readEEPROMWord(uint32_t address) { uint32_t val = 0; address = address + EEPROM_START_ADDRESS; val = *(__IO uint32_t*)address; return val; } void myGenieEventHandler(void) { genieFrame Event; genieDequeueEvent(&Event); if(Event.reportObject.cmd == GENIE_REPORT_EVENT) { if (Event.reportObject.object == GENIE_OBJ_KEYBOARD) { if (Event.reportObject.index == 0) { valeur_clavier = Event.reportObject.data_lsb; printf("%c\n\r", valeur_clavier); if ((valeur_clavier == code1) || (valeur_clavier== code2) || (valeur_clavier == code3)) { printf("Acces autorise\n\r"); } else { printf("Acces refuse\n\r"); } } } if (Event.reportObject.object == GENIE_OBJ_4DBUTTON) { if (Event.reportObject.index == 3) //Start { printf("Depart\n\r"); flag=1; } if (Event.reportObject.index == 5) //Stop { printf("Stop\n\r"); flag=0; } /*if (Event.reportObject.index == 8) // Contraste + { if (y<15) { y++; printf("Contraste=%d\r\n",y); flag_contraste=1; } genieWriteContrast(y); } if (Event.reportObject.index == 7) // Contraste - { if (y>0) { y--; printf("Contraste=%d\r\n",y); flag_contraste=1; } genieWriteContrast(y); }*/ if (Event.reportObject.index == 6) //Lecture tempo { SDFileSystem sd(PA_7, PA_6, PA_5, PB_6, "sd"); char numberstring[100]; FILE *fp = fopen("/sd/valeur_temporisation.txt", "r"); fgets(numberstring, 100, fp); if(fp == NULL) { error("Impossible d'ouvrir le fichier pour la lecture\n\r"); fclose(fp); } else { printf("Lecture temporisation\n\r"); enableEEPROMWriting(); sscanf(numberstring, "%d", &tempo1); writeEEPROMWord(adressetempo, tempo1); lecture=readEEPROMWord(adressetempo); printf ("eeprom: %d\n\r",lecture); printf ("carte : %d\n\r",tempo1); sscanf(numberstring+3, "%d", &tempo2); writeEEPROMWord(adressetempo+4, tempo2); lecture=readEEPROMWord(adressetempo+4); printf ("eeprom: %d\n\r",lecture); printf ("carte : %d\n\r",tempo2); sscanf(numberstring+6, "%d", &tempo3); writeEEPROMWord(adressetempo+8, tempo3); lecture=readEEPROMWord(adressetempo+8); printf ("eeprom: %d\n\r",lecture); printf ("carte : %d\n\r",tempo3); sscanf(numberstring+9, "%d", &tempo4); writeEEPROMWord(adressetempo+12, tempo4); lecture=readEEPROMWord(adressetempo+12); printf ("eeprom: %d\n\r",lecture); printf ("carte : %d\n\r",tempo4); sscanf(numberstring+11, "%d", &tempo5); writeEEPROMWord(adressetempo+16, tempo5); lecture=readEEPROMWord(adressetempo+16); printf ("eeprom: %d\n\r",lecture); printf ("carte : %d\n\r",tempo5); sscanf(numberstring+14, "%d", &tempo6); writeEEPROMWord(adressetempo+20, tempo6); lecture=readEEPROMWord(adressetempo+20); printf ("eeprom: %d\n\r",lecture); printf ("carte : %d\n\r",tempo6); sscanf(numberstring+16, "%d", &tempo7); writeEEPROMWord(adressetempo+24, tempo7); lecture=readEEPROMWord(adressetempo+24); printf ("eeprom: %d\n\r",lecture); printf ("carte : %d\n\r",tempo7); sscanf(numberstring+18, "%d", &tempo8); writeEEPROMWord(adressetempo+28, tempo8); lecture=readEEPROMWord(adressetempo+28); printf ("eeprom: %d\n\r",lecture); printf ("carte : %d\n\r",tempo8); fclose(fp); printf("Lecture finie!\n\r"); disableEEPROMWriting(); } } if (Event.reportObject.index == 7) //Lecture code RFID { SDFileSystem sd(PA_7, PA_6, PA_5, PB_6, "sd"); char numberrfid[100]; FILE *fp1 = fopen("/sd/valeur_rfid.txt", "r"); fgets(numberrfid, 100, fp1); if(fp1 == NULL) { error("Impossible d'ouvrir le fichier pour la lecture\n\r"); } flag = 2; printf("Lecture code rfid\n\r"); enableEEPROMWriting(); sscanf(numberrfid, "%d", &rfid1); writeEEPROMWord(adresserfid, rfid1); lecture=readEEPROMWord(adresserfid); printf ("eeprom: %d\n\r",lecture); printf ("carte : %d\n\r", rfid1); sscanf(numberrfid+8, "%d", &rfid2); writeEEPROMWord(adresserfid+8, rfid2); lecture=readEEPROMWord(adresserfid+8); printf ("eeprom: %d\n\r",lecture);; printf ("carte : %d\n\r", rfid2); sscanf(numberrfid+17, "%d", &rfid3); writeEEPROMWord(adresserfid+16, rfid3); lecture=readEEPROMWord(adresserfid+16); printf ("eeprom: %d\n\r",lecture); printf ("carte : %d\n\r", rfid3); sscanf(numberrfid+25, "%d", &rfid4); writeEEPROMWord(adresserfid+24, rfid4); lecture=readEEPROMWord(adresserfid+24); printf ("eeprom: %d\n\r",lecture); printf ("carte : %d\n\r", rfid4); sscanf(numberrfid+34, "%d", &rfid5); writeEEPROMWord(adresserfid+32, rfid5); lecture=readEEPROMWord(adresserfid+32); printf ("eeprom: %d\n\r",lecture); printf ("carte : %d\n\r", rfid5); fclose(fp1); printf("Lecture finie!\n\r"); disableEEPROMWriting(); } } } return; } int main() { pc.baud(9600); ledmasse = 1; SetupGenie(); genieAttachEventHandler(&myGenieEventHandler); genieWriteContrast(15); while(1) { if (flag == 1) { led1 = 1; led2 = 1; led3 = 1; led4 = 1; led5 = 0; led6 = 0; led7 = 0; led8 = 0; wait(1); if (chrono == 0) { chrono=tab[i]; i=i+1; } } else if(flag == 0) { led1 = 0; led2 = 0; led3 = 0; led4 = 0; led5 = 1; led6 = 1; led7 = 1; led8 = 1; chrono=tab[i]; wait(1); } else if(flag == 2) { if(rfid.read() == rfid1) { printf("RFID Tag number : %d\n\r", rfid.read()); genieWriteObject(GENIE_OBJ_LED, 0x00, 1); } } /*if(rfid.read() == rfid1) { genieWriteObject(GENIE_OBJ_LED, 0x00, chrono); }*/ } }