![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
แก้ให้แล้ว
Dependencies: NOKIA_5110 mbed
Fork of Lost-Found_BOX by
main.cpp
- Committer:
- kantapon501
- Date:
- 2015-12-06
- Revision:
- 3:c927196a726f
- Parent:
- 2:5764ad3214cd
- Child:
- 4:75346bd905c0
File content as of revision 3:c927196a726f:
//Test of cheap 13.56 Mhz RFID-RC522 module from eBay //This code is based on Martin Olejar's MFRC522 library. Minimal changes //Adapted for Nucleo STM32 F401RE. Should work on other Nucleos too //Connect as follows: //RFID pins -> Nucleo header CN5 (Arduino-compatible header) //---------------------------------------- //RFID IRQ=pin5 -> Not used. Leave open //RFID MISO=pin4 -> Nucleo SPI_MISO=PA_6=D12 //RFID MOSI=pin3 -> Nucleo SPI_MOSI=PA_7=D11 //RFID SCK=pin2 -> Nucleo SPI_SCK =PA_5=D13 //RFID SDA=pin1 -> Nucleo SPI_CS =PB_6=D10 SlaveSelect //RFID RST=pin7 -> Nucleo =PA_9=D8 //3.3V and Gnd to the respective pins #include "mbed.h" #include "MFRC522.h" #include "NOKIA_5110.h" // Nucleo Pin for MFRC522 reset (pick another D pin if you need D8) #define MF_RESET D9 DigitalOut LedGreen(LED1); DigitalOut spi_address[2] = {SPI_CS,PB_4}; //Serial connection to PC for output Serial pc(SERIAL_TX, SERIAL_RX); PwmOut speaker(D3); DigitalOut lock(D2); MFRC522 RfChip (SPI_MOSI, SPI_MISO, SPI_SCK, SPI_CS, MF_RESET); void GetID(uint8_t ID[]) { for (uint8_t i = 0; i < RfChip.uid.size; i++) { ID[i] = RfChip.uid.uidByte[i]; }; } void speak() { speaker.period_ms(1); speaker.write(0.1f); wait(0.2); speaker.write(0); } void speakRight() { speaker.period_ms(1); speaker.write(0.1f); wait(1); speaker.write(0); } void speakWrong() { speaker.period_ms(1); speaker.write(0.1f); wait(0.2); speaker.write(0); wait(0.1); speaker.write(0.1f); wait(0.2); speaker.write(0); } void checkRight() { } int main(void) { uint8_t RFID[10]; int check=0; LcdPins myPins; myPins.sce = PB_4; //D5 ActiveLow SlaveSelect myPins.rst = PB_10; //D6 myPins.dc = PA_8; //D7 myPins.mosi = PA_7; //SPI_MOSI; myPins.miso = NC; myPins.sclk = PA_5; //SPI_SCK; NokiaLcd myLcd( myPins ); myLcd.InitLcd(); // LCD is reset and DDRAM is cleared myLcd.DrawString("Welcome"); myLcd.stop(); //RfChip.start(); pc.printf("starting...\n"); // Init. RC522 Chip RfChip.PCD_Init(); pc.printf("Begin RFID!\n"); while (true) { LedGreen = 1; // Look for new cards if ( ! RfChip.PICC_IsNewCardPresent()) { wait_ms(500); continue; } // Select one of the cards if ( ! RfChip.PICC_ReadCardSerial()) { wait_ms(500); continue; } LedGreen = 0; if(check == 1) { if(RFID[1] == RfChip.uid.uidByte[1]) { pc.printf("Right\n"); for (uint8_t i = 0; i < RfChip.uid.size; i++) { RfChip.uid.uidByte[i] = '0'; } myLcd.InitLcd(); myLcd.DrawString("Right!! "); myLcd.stop(); check = 0; lock = 1; speakRight(); wait(2.5); lock = 0; continue; } else { pc.printf("Wrong!!\n"); myLcd.InitLcd(); myLcd.DrawString("Wrong!! "); myLcd.stop(); speakWrong(); continue; } } if(check == 0) { myLcd.InitLcd(); myLcd.DrawString("Ready"); myLcd.stop(); } // Print Card UID pc.printf("Card UID: "); for (uint8_t i = 0; i < RfChip.uid.size; i++) { pc.printf(" %X", RfChip.uid.uidByte[i]); } speak(); GetID(RFID); lock = 0; pc.printf("\n\r"); wait_ms(1000); check = 1; } }