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);
}
}