Мне интересно, может ли кто-нибудь помочь прокомментировать каждую строку и выполнить процесс этого кода, который я нашел в Интернете? Я кажусь довольно запутанным, особенно с использованием тернарного оператора. Я хотел бы использовать его для своего проекта, но мне не нравится использовать код, который я не совсем понимаю. Этот код распечатывает UID метки RFID, отсканированной в последовательный монитор, но я не уверен в каждой функции.
#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];
void setup() {
Serial.begin(9600);
SPI.begin(); // Init SPI bus
rfid.PCD_Init(); // Init MFRC522
for (byte i = 0; i < 6; i++) {
key.keyByte[i] = 0xFF;
}
}
void loop() {
// Look for new cards
if ( ! rfid.PICC_IsNewCardPresent())
return;
// 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];
}
printHex(rfid.uid.uidByte, rfid.uid.size);
Serial.println();
rfid.PICC_HaltA();
rfid.PCD_StopCrypto1();
}
void printHex(byte *buffer, byte bufferSize) { //Loops as big as UID size
for (byte i = 0; i < bufferSize; i++) {
Serial.print(buffer[i] < 0x10 ? " 0" : " "); //Ternary returns 0 if < 0x10
Serial.print(buffer[i], HEX);
}
}
Существует хорошо написанный документ в библиотеке MFRC522 github. Также попробовал примеры, доступные в библиотеке, которая хорошо прокомментирована.