各位大大帮忙看看这个问题。
我在用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熄灭。劳烦各位帮忙看看谁是什么问题。 |