托米 发表于 2019-7-22 22:02:13

分享一个RFID-RC522的程序

本帖最后由 托米 于 2019-7-22 22:02 编辑

研究了好几天,网上一只没有找到可以使用的程序,终于自己改出了一套,分享给大家

/*
* Typical pin layout used:
* -----------------------------------------------------------------------------------------
*             MFRC522      Arduino       Arduino   Arduino    Arduino          Arduino
*             Reader/PCD   Uno/101       Mega      Nano v3    Leonardo/Micro   Pro Micro
* Signal      Pin          Pin         Pin       Pin      Pin            Pin
* -----------------------------------------------------------------------------------------
* RST/Reset   RST          9             5         D9         RESET/ICSP-5   RST
* SPI SS      SDA(SS)      10            53      D10      10               10
* SPI MOSI    MOSI         11 / ICSP-4   51      D11      ICSP-4         16
* SPI MISO    MISO         12 / ICSP-1   50      D12      ICSP-1         14
* SPI SCK   SCK          13 / ICSP-3   52      D13      ICSP-3         15
*/

#include <SPI.h>
#include <MFRC522.h>

#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);   // Create MFRC522 instance.

String read_rfid;

String rfid1 = "FFFFFFFF";//设备1uid
String rfid2 = "00000000";//设备2uid
String rfid3 = "XXXXXXXX";//设备3uid
int lock = 2;
int bee = 3;
int ledr = 4;
int ledg = 5;
int ledb = 6;
void setup()
{
Serial.begin(9600);   // Initiate a serial communication
while (!Serial);
SPI.begin();      // InitiateSPI bus
mfrc522.PCD_Init();   // Initiate MFRC522
Serial.println("Approximate your card to the reader...");
//Serial.println();
pinMode(lock,OUTPUT);
digitalWrite(lock,LOW);
pinMode(bee,OUTPUT);
digitalWrite(bee,LOW);
pinMode(ledr,OUTPUT);
digitalWrite(ledr,HIGH);
pinMode(ledg,OUTPUT);
digitalWrite(ledg,HIGH);
pinMode(ledb,OUTPUT);
digitalWrite(ledb,HIGH);
}

void dump_byte_array(byte *buffer,byte bufferSize)
{
read_rfid="";
for(byte i = 0;i < bufferSize;i++)
{
    read_rfid = read_rfid + String(buffer,HEX);
}
}

void open_lock()
{
bb();

}

void bb()
{
digitalWrite(ledb,HIGH);
digitalWrite(ledg,LOW);
   for (int x = 0;x < 100;x++)
{
   
    digitalWrite(bee,HIGH);
    delay(1);
    digitalWrite(bee,LOW);
    delay(1);
}
for (int x = 0;x < 200;x++)
{
   
    digitalWrite(bee,HIGH);
    delayMicroseconds(300);
    digitalWrite(bee,LOW);
    delayMicroseconds(300);
}
digitalWrite(ledg,HIGH);
}


void loop()
{
digitalWrite(ledb,LOW);
// Look for new cards
if ( ! mfrc522.PICC_IsNewCardPresent())

    return;

// Select one of the cards
if ( ! mfrc522.PICC_ReadCardSerial())

    return;


   dump_byte_array(mfrc522.uid.uidByte,mfrc522.uid.size);
   Serial.println(read_rfid);
   if(read_rfid == rfid1 or read_rfid == rfid2 or read_rfid == rfid3)
   {
    Serial.println("Pass");
    open_lock();
   }
   else
   {
    digitalWrite(ledb,HIGH);
    digitalWrite(ledr,LOW);
    for (int x = 0;x < 100;x++)
{
   
    digitalWrite(bee,HIGH);
    delay(1);
    digitalWrite(bee,LOW);
    delay(1);
}
delay(80);
for (int x = 0;x < 100;x++)
{
   
    digitalWrite(bee,HIGH);
    delay(1);
    digitalWrite(bee,LOW);
    delay(1);
}
digitalWrite(ledr,HIGH);
   }
// 使放置在读卡区的IC卡进入休眠状态,不再重复读卡
mfrc522.PICC_HaltA();

// 停止读卡模块编码
mfrc522.PCD_StopCrypto1();

}

小魔杰 发表于 2019-10-11 22:27:50

MFRC522.h呢?
页: [1]
查看完整版本: 分享一个RFID-RC522的程序