用rfid读取数据

来源:互联网 发布:淘宝上怎么做一件代发 编辑:程序博客网 时间:2024/04/28 10:48

直接是用uno 的板子接到rfid rc522上 对tag上的信息进行读取,如果读取到了验证的id 就播放相应的音乐,当其离开读卡器的时候停止播放音乐



#include <MFRC522.h>#include <SPI.h>/*PinsSPI   UNO  Mega2560  Leonardo1 (NSS) SAD (SS)   10     53        102       SCK        13     52        SCK13       MOSI       11     51        MOSI14       MISO       12     50        MISO15       IRQ        *      *         *6       GND       GND     GND       GND7       RST        5      ?         Reset8      +3.3V (VCC) 3V3     3V3       3.3V*/#define SAD 10#define RST 5MFRC522 nfc(SAD, RST);//Create MFRC522 instance#define ledPinOpen    2#define ledPinClosed  3void setup() {  pinMode(ledPinOpen  , OUTPUT);     pinMode(ledPinClosed, OUTPUT);     SPI.begin();// Init SPI bus  Serial.begin(115200);//Initialize serial communications with the PC  Serial.println("Looking for MFRC522.");  nfc.begin();// Init MFRC522 card  byte version = nfc.getFirmwareVersion();  if (! version) {    Serial.print("Didn't find MFRC522 board.");    while(1); //halt  }  Serial.print("Found chip MFRC522 ");  Serial.print("Firmware ver. 0x");  Serial.print(version, HEX);  Serial.println(".");}#define AUTHORIZED_COUNT 3 /*If you want more Authorized of cards set the count here, and then add the serials below*/byte Authorized[AUTHORIZED_COUNT][6] = {                            {0x45, 0x14, 0x39, 0x2E, 0xFF, 0xFF, }                           /*,{0x10, 0x14, 0x39, 0x2E, 0xFF, 0xFF, }*/  /*f. example how to add more authorized cards*/                            ,{0x7C,0x76,0x4A,0x32}                            ,{0x04,0xBD,0x41,0x08}                          };                          void printSerial(byte *serial);boolean isSame(byte *key, byte *serial);boolean isAuthorized(byte *serial);//pre musicboolean preTag=true;byte preSerial[5];void loop() {  byte status;  byte data[MAX_LEN];  byte serial[5];  boolean Opening = false;  digitalWrite(ledPinOpen, Opening);  digitalWrite(ledPinClosed, !Opening);  status = nfc.requestTag(MF1_REQIDL, data);  if (status == MI_OK) {    status = nfc.antiCollision(data);    memcpy(serial, data, 5);        if(isAuthorized(serial))    {       //Serial.println("Authenticated");      Opening = true;            //      if(preTag)      {        memcpy(preSerial,data,5);        preTag=false;      }      else      {        if(isSame(preSerial,serial))        {          //keep or start to playing;          printSerial(serial);          Serial.println("playinnnnnng~~~");                 }        else        {          memcpy(preSerial,data,5);        }      }    }    else    {       printSerial(serial);      Serial.println("is NOT authenticated");      Opening = false;    }        nfc.haltTag();    digitalWrite(ledPinOpen, Opening);    digitalWrite(ledPinClosed, !Opening);                //delay(2000);  }//if (status == MI_OK)    delay(500);  // stop the music  if(!Opening)    {      Serial.println("stoping");    }}//void loop()boolean isSame(byte *key, byte *serial){    for (int i = 0; i < 4; i++) {      if (key[i] != serial[i])      {         return false;       }    }        return true;}boolean isAuthorized(byte *serial){    for(int i = 0; i<AUTHORIZED_COUNT; i++)    {      if(isSame(serial, Authorized[i]))        return true;    }   return false;}void printSerial(byte *serial){        Serial.print("Serial:");    for (int i = 0; i < 4; i++) {      Serial.print(serial[i], HEX);      Serial.print(" ");    }}


0 0
原创粉丝点击