我有一个带有MFRC522 RFID接收器模块的Arduino Uno设置。我正在尝试创建一个验证系统,在其中我使用卡的UID打开L.E.D. 这是我目前的代码:
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.
void setup() {
Serial.begin(9600); // Initialize serial communications with the PC
SPI.begin(); // Init SPI bus
mfrc522.PCD_Init(); // Init MFRC522 card
Serial.println("Scan PICC to see UID and type...");
}
void loop() {
// Look for new cards
if ( ! mfrc522.PICC_IsNewCardPresent()) {
return;
}
// Select one of the cards
if ( ! mfrc522.PICC_ReadCardSerial()) {
return;
}
byte readCard[7] ;
byte cardCode[7] = E05E987;
Serial.println("Scanned PICC's UID:");
for (int i = 0; i < mfrc522.uid.size; i++) {
readCard[i] = mfrc522.uid.uidByte[i];
Serial.print(readCard[i], HEX);
}
Serial.println("");
if (readCard == cardCode){
Serial.println("Correct Code");
return;
}
}
然而,当我编译这段代码时,我遇到了这个错误:
/root/Arduino/RFID_Check_/RFID_Check_.ino: In function 'void loop()':
RFID_Check_:28: error: 'E05E987' was not declared in this scope
byte cardCode[7] = E05E987;
^
exit status 1
'E05E987' was not declared in this scope
如何解决此错误?我试过改变方括号之间的值无济于事。
答案 0 :(得分:0)
你判断一个7字节的数组。看来你想给它分配一个值;但是,该值不适合一个字节。
要指定十六进制值,必须在其前面加0x
,以便0xE05E987
为正确的十六进制值。
但是这个值对于一个字节来说太大了。您可以按如下方式将值分配给数组:
byte cardCode[7] = {0xE0, 0x5E, 0x98, 0x07};
未提供的任何值都将为零。以上内容已初始化cardCode[0]
到cardCode[3]
,并将余数设置为零。