8266连接 rfid522模块 掉电保存 开锁 (舵机)
int a=0; int s=16; int addr = 400; #include <ESP8266WiFi.h> #define EEPROM_SIZE 512//EEPROM 大小 #include <ESP8266AVRISP.h> int v0=0; int v1=0; int v2=0; int v3=0; #include <SPI.h> #include <Servo.h> #include <MFRC522.h> #include <EEPROM.h> #define SS_PIN 4 #define RST_PIN 10 Servo myservo; MFRC522 rfid(SS_PIN, RST_PIN); // Instance of the class MFRC522::MIFARE_Key key; // Init array that will store new NUID byte nuidPICC[4]; void Init_EEPROM() //初始化EEPROM size { EEPROM.begin(EEPROM_SIZE);//初始化EEPROM } void setup() { Serial.begin(9600); Init_EEPROM(); pinMode(a,INPUT_PULLUP); SPI.begin(); // Init SPI bus rfid.PCD_Init(); // Init MFRC522 myservo.attach(s); for (byte i = 0; i < 6; i++) { key.keyByte[i] = 0xFF; } v0=EEPROM.read(addr); v1=EEPROM.read(addr+1); v2=EEPROM.read(addr+2); v3=EEPROM.read(addr+3); Serial.print(v0); Serial.print(v1); Serial.print(v2); Serial.print(v3); Serial.println(F("This code scan the MIFARE Classsic NUID.")); Serial.print(F("Using the following key:")); printHex(key.keyByte, MFRC522::MF_KEY_SIZE); } void loop() { if ( ! rfid.PICC_IsNewCardPresent()) return; if ( ! rfid.PICC_ReadCardSerial()) return; Serial.print(F("PICC type: ")); MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak); Serial.println(rfid.PICC_GetTypeName(piccType)); // Check is the PICC of Classic MIFARE type if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI && piccType != MFRC522::PICC_TYPE_MIFARE_1K && piccType != MFRC522::PICC_TYPE_MIFARE_4K) { Serial.println(F("Your tag is not of type MIFARE Classic.")); return; } if(digitalRead(a)==LOW){ delay(15); if(digitalRead(a)==LOW){Serial.println("write ......"); EEPROM.write(addr,rfid.uid.uidByte[0]); EEPROM.write(addr+1,rfid.uid.uidByte[1]); EEPROM.write(addr+2,rfid.uid.uidByte[2]); EEPROM.write(addr+3,rfid.uid.uidByte[3]); EEPROM.commit(); Serial.println("write OK!"); }} // Store NUID into nuidPICC array for (byte i = 0; i < 4; i++) { nuidPICC[i] = rfid.uid.uidByte[i]; } Serial.println(F("The NUID tag is:")); Serial.print(F("In hex: ")); // printHex(rfid.uid.uidByte, rfid.uid.size); Serial.println(); Serial.print(F("In dec: ")); printDec(rfid.uid.uidByte, rfid.uid.size); Serial.println(); if (rfid.uid.uidByte[0] == v0 && rfid.uid.uidByte[1] == v1 && rfid.uid.uidByte[2] ==v2 && rfid.uid.uidByte[3] == v3 ) { Serial.println(F("OK KAISUO CHENGGONG! **********.")); myservo.write(90); // sets the servo position according to the scaled value delay(1200); myservo.write(0); } else Serial.println(F("key budui !!!!!!")); // Halt PICC rfid.PICC_HaltA(); // Stop encryption on PCD rfid.PCD_StopCrypto1(); } void printHex(byte *buffer, byte bufferSize) { for (byte i = 0; i < bufferSize; i++) { Serial.print(buffer[i] < 0x10 ? " 0" : " "); Serial.print(buffer[i], HEX); } } void printDec(byte *buffer, byte bufferSize) { for (byte i = 0; i < bufferSize; i++) { Serial.print(buffer[i] < 0x10 ? " 0" : " "); Serial.print(buffer[i], DEC); } }