![](/media/cache/group/nUCLEO.png.50x50_q85.jpg)
hmc5883l
Dependencies: HMC5883L LCD4884 MFRC522 eeprom mbed
project.cpp
- Committer:
- 1918june
- Date:
- 2015-12-08
- Revision:
- 4:b56a8a051fdd
- Parent:
- 3:987e54d48f77
- Child:
- 5:4af4865f462b
File content as of revision 4:b56a8a051fdd:
#include "mbed.h" #include "LCD4884.h" #include "MFRC522.h" #include "eeprom.h" #include "string.h" // KL25Z Pin for MFRC522 reset #define MF_RESET D9 EEPROM eeprom(I2C_SDA,I2C_SCL,0); Serial pc(SERIAL_TX,SERIAL_RX); LCD4884 lcd; MFRC522 RFID(D11, D12, D13, D10, MF_RESET); InterruptIn Sw1(PC_5); AnalogIn Rnd(A0); DigitalIn Switch1(PC_5); DigitalIn Switch2(PC_6); InterruptIn Sw2(PC_6); uint8_t mode=0; uint8_t selectitem=0,place=0; void ItrSw1() { mode=1; } void ItrSw2() { mode=2; } void ItrSw3() { mode=0; } void printstring(int x,int y,string s,int n,int m) { int k=0; lcd.LCD_set_XY(x,y); while(k<n) { lcd.LCD_write_char(s[k],m); k++; } } int main() { pc.baud(9600); Sw1.rise(&ItrSw1); Sw2.rise(&ItrSw2); string NameJune="Natthanicha",recieveNameJune,SurJune="Jamroonpan",recieveSurJune,IdJune="57340500023",recieveIdJune; //June start @ 1-36 string NameO="Sirawat",recieveNameO,SurO="Sok",recieveSurO,IdO="57340500071",recieveIdO; uint8_t UID[8],recieveUID[8]; UID[0]=106; UID[1]=224; UID[2]=37; UID[3]=231; UID[4]=106; UID[5]=76; UID[6]=39; UID[7]=231; eeprom.write(1,&NameJune,11); wait_us(1); eeprom.write(12,&SurJune,10); wait_us(1); eeprom.write(22,&IdJune,11); wait_us(1); eeprom.write(41,&NameO,7); wait_us(1); eeprom.write(48,&SurO,3); wait_us(1); eeprom.write(51,&IdO,11); wait_us(1); eeprom.write(81,UID,8); wait_us(1); eeprom.read(1,&recieveNameJune,11); eeprom.read(12,&recieveSurJune,10); eeprom.read(22,&recieveIdJune,11); eeprom.read(41,&recieveNameO,7); eeprom.read(48,&recieveSurO,3); eeprom.read(51,&recieveIdO,11); eeprom.read(81,recieveUID,8); //pc.printf("%s\n",recieveNameJune); //pc.printf("%s\n",recieveSurJune); //pc.printf("%s\n",recieveIdJune); //pc.printf("%s\n",recieveNameO); //pc.printf("%s\n",recieveSurO); //pc.printf("%s\n",recieveIdO); //pc.printf("%d %d %d %d %d %d %d %d\n",recieveUID[0],recieveUID[1],recieveUID[2],recieveUID[3],recieveUID[4],recieveUID[5],recieveUID[6],recieveUID[7]); RFID.PCD_Init(); lcd.LCD_init(); lcd.backlight(ON); wait(2); lcd.LCD_clear(); while(1) { lcd.LCD_write_string(0,0,"SCAN ID CARD",0); if ( ! RFID.PICC_IsNewCardPresent()) // Look for new cards continue; if ( ! RFID.PICC_ReadCardSerial()) // Select one of the cards continue; pc.printf("Card UID: "); for (uint8_t i = 0; i < RFID.uid.size; i++) pc.printf(" %d", RFID.uid.uidByte[i]); printf("\n\r"); if( RFID.uid.uidByte[0]==recieveUID[0] && RFID.uid.uidByte[1]==recieveUID[1] && RFID.uid.uidByte[2]==recieveUID[2] && RFID.uid.uidByte[3]==recieveUID[3] ) { //จำ pc.printf("%s\t%s\t%s\n",recieveNameJune,recieveSurJune,recieveIdJune); lcd.LCD_clear(); string name,sur; eeprom.read(1,&name,11); eeprom.read(12,&sur,10); printstring(0,0,name,11,0); printstring(0,1,sur,10,0); //lcd.LCD_clear(); } if( RFID.uid.uidByte[0]==recieveUID[4] && RFID.uid.uidByte[1]==recieveUID[5] && RFID.uid.uidByte[2]==recieveUID[6] && RFID.uid.uidByte[3]==recieveUID[7] ) { pc.printf("%s\t%s\t%s\n",recieveNameO,recieveSurO,recieveIdO); //จำ string name,sur; lcd.LCD_clear(); eeprom.read(41,&name,7); eeprom.read(48,&sur,3); printstring(0,0,name,7,0); printstring(0,1,sur,3,0); } //wait(2); //lcd.LCD_clear(); lcd.LCD_write_string(0,2,"1 select item",0); lcd.LCD_write_string(0,3,"2 select place",0); //lcd.LCD_write_string(40,5,"cancel",0); while(1) { if(mode==1) { printf("1"); lcd.LCD_clear(); lcd.LCD_write_string(0,0,"mode 1",0); lcd.LCD_write_string(0,1,"select item",0); while(1) { if(Switch1.read()==1) { char str[10]; selectitem++; if(selectitem > 9) selectitem=1; wait(0.2); sprintf(str,"item : %d",selectitem); printstring(3,2,str,8,0); } if(Switch2.read()==1 && selectitem !=0) { mode=1; char str[10]; place=((int) (Rnd.read()*1000))%4 +1; wait(0.2); sprintf(str,"place :%d",place); printstring(3,3,str,8,0); break; } } while(1) { //อ่านค่าจากแผ่นนั่นว่ามันจิ้มตรงมั้ย } } if(mode==2) {//selectplace printf("2"); lcd.LCD_clear(); lcd.LCD_write_string(0,0,"mode 2",0); lcd.LCD_write_string(0,1,"select place",0); while(1) { if(Switch1.read()==1) { mode=2; char str[10]; place++; if(place > 4) place=1; wait(0.2); sprintf(str,"place : %d",place); printstring(3,2,str,9,0); } if(Switch2.read()==1 && place!=0) { char str[10]; selectitem=((int) (Rnd.read()*1000))%9 +1; wait(0.2); sprintf(str,"item : %d",selectitem); printstring(3,3,str,8,0); break; } } while(1) {} } if(mode==3) { printf("0"); } printf("mode=%d",mode); } //end while mode loop } }