极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2185|回复: 2

分享一个RFID-RC522的程序

[复制链接]
发表于 2019-7-22 22:02:13 | 显示全部楼层 |阅读模式
本帖最后由 托米 于 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();      // Initiate  SPI 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呢?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊 ( 浙ICP备09023225号 )

GMT+8, 2019-11-20 18:26 , Processed in 0.044434 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表