arduino 用522开锁代码 没注释 掉电保存

int a=2;
int s=3;
int addr = 0;

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 10
#define RST_PIN 9
 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 setup() { 
  Serial.begin(9600);
  pinMode(a,INPUT_PULLUP);
  SPI.begin(); // Init SPI bus
  rfid.PCD_Init(); // Init MFRC522 
myservo.attach(3);
  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){
      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]);
      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);
  }
}

 

 

 

下面的加入串口 只把板子当下位机 发送串口给wifi板子

定时长传 off状态还没写好 

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 <MFRC522.h>
#include <EEPROM.h>
#define SS_PIN 4
#define RST_PIN 10
boolean off=true;
String statu = "on";
String uid = "";
#define offj 16

 
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);
  pinMode(offj,INPUT_PULLUP);
  SPI.begin(); // Init SPI bus
  rfid.PCD_Init(); // Init MFRC522 

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

  printHex(key.keyByte, MFRC522::MF_KEY_SIZE);
}
 
void loop() {
 //Serial.println((String)"{\"statu\":\"write\",\"uid\":" + rfid.uid.uidByte[0]+ rfid.uid.uidByte[1]+ rfid.uid.uidByte[2]+ rfid.uid.uidByte[3] + "}");
  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((String)"{\"statu\":\"write\",\"uid\":" + rfid.uid.uidByte[0]+ rfid.uid.uidByte[1]+ rfid.uid.uidByte[2]+ rfid.uid.uidByte[3] + "}");
      
      }}
      


 // 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((String)"{\"statu\":\"on\",\"uid\":" + rfid.uid.uidByte[0]+ rfid.uid.uidByte[1]+ rfid.uid.uidByte[2]+ rfid.uid.uidByte[3] + "}");
           
  
  }
  else Serial.println(F("key budui !!!!!!"));

  // Halt PICC
  rfid.PICC_HaltA();

  // Stop encryption on PCD
  rfid.PCD_StopCrypto1();

 //如果状态改变就执行
 off_statu();
 delay(1000);
}
void off_statu()
{
    if(digitalRead(offj)==LOW)
    {
      Serial.println((String)"{\"statu\":\"statu\",\"off\":"+"0"+"}");
      }
     else
     Serial.println((String)"{\"statu\":\"statu\",\"off\":"+"1"+"}");
}

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

 

posted @ 2017-08-26 10:28  xiaohe520  阅读(455)  评论(0编辑  收藏  举报