极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 15974|回复: 1

Arduino控制RC522时遇到的问题

[复制链接]
发表于 2018-10-7 15:37:26 | 显示全部楼层 |阅读模式
各位大大帮忙看看这个问题。
我在用Arduino UNO控制RC522时想用刷卡,验证卡序列号是否正确来控制LED的亮和灭。有卡在感应范围内并且卡序列号正确熄灭LED灯,没有卡或者卡序列号不正确时保持LED常亮。
我用了MFRC522库的样例程序如下:

#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 rfid(SS_PIN, RST_PIN); // Instance of the class
MFRC522::MIFARE_Key key;
// Init array that will store new NUID
byte nuidPICC[4];
const int l1 = 7;  //LED
//uchar serNum[5];

void setup() {
   Serial.begin(9600);
   SPI.begin(); // Init SPI bus
   rfid.PCD_Init(); // Init MFRC522
   pinMode(l1, OUTPUT);
   digitalWrite(l1, HIGH);
}
void loop() {
   // Look for new cards
   if ( ! rfid.PICC_IsNewCardPresent())
   {
     digitalWrite(l1,HIGH);
     Serial.println("KaiDeng");
   }

   // Verify if the NUID has been readed
   if ( ! rfid.PICC_ReadCardSerial())
     return;
for (byte i = 0; i < 4; i++) {
       nuidPICC[i] = rfid.uid.uidByte[i];
       Serial.print(nuidPICC[i]);
     }
     Serial.println();
     if (nuidPICC[0] == 0x5A && nuidPICC[1] == 0x6D && nuidPICC[2] == 0xC8 && nuidPICC[3] == 0x73)
     {
       digitalWrite(l1, LOW);
       Serial.print("GuanDeng");
     }
     else
     {
       digitalWrite(l1, HIGH);
       Serial.print("KaiDeng");
     }
}


烧录以后,没有卡的时候都正常等可以常亮。但是有卡并且卡号正确的情况下LED一直在闪。感觉像是rfid.PICC_IsNewCardPresent()这个方法一次发现卡,一次没发现卡。我想实现的是如果有卡并且卡号正确,LED熄灭。劳烦各位帮忙看看谁是什么问题。
回复

使用道具 举报

发表于 2018-10-10 17:01:54 | 显示全部楼层
RC522d感应距离短
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-20 21:43 , Processed in 0.039668 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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