В вашем коде есть неиспользуемые переменные. Давайте избавимся от них, чтобы это было менее запутанным. Я также добавил комментарии, которые объясняют операторы if.
#include <RFID.h>
#include <SPI.h>
#define SS_PIN 10
#define RST_PIN 9
RFID rfid(SS_PIN, RST_PIN);
String cardno;
String readerID = "100";
void setup() {
Serial.begin(9600);
SPI.begin();
rfid.init();
}
void loop() {
if (rfid.isCard()) { // Look for a card. If found, return true.
if (rfid.readCardSerial()) { // Read the serial number of the card. if successful, return true.
cardno = String(rfid.serNum[0]) +
String(rfid.serNum[1]) +
String(rfid.serNum[2]) +
String(rfid.serNum[3]) +
String(rfid.serNum[4]);
Serial.print(readerID);
Serial.print(":");
Serial.println(cardno);
}
}
rfid.halt();
delay(1000);
}
Исходя из вашего комментария, я думаю, вы хотите понять, как реализован класс RFID. Я предлагаю посмотреть на RFID.h и RFID.cpp.
В классе RFID есть массив с именем serNum
. Я предполагаю, что когда вы звоните readCardSerial()
, экземпляр RFID пытается сохранить номер карты в этом массиве. Если операция прошла успешно, возвращается true
.