#include <SPI.h>
#include <MFRC522.h>
MFRC522 mfrc522(10, 9);
char code[8] = ""; // Inserire qui il codice esadecimale della RFID Card di riferimento; esempio: "8FA2EA29"
byte cdvl[4];
constexpr uint8_t Led_Rosso = 1;
constexpr uint8_t Led_Verde = 0;
void setup() {
pinMode(Led_Rosso, OUTPUT);
pinMode(Led_Verde, OUTPUT);
VectorValue(code, cdvl);
digitalWrite(Led_Rosso, LOW);
digitalWrite(Led_Verde, LOW);
delay(1000);
digitalWrite(Led_Rosso, HIGH);
digitalWrite(Led_Verde, HIGH);
}
void loop() {
SPI.begin();
mfrc522.PCD_Init();
if (mfrc522.PICC_IsNewCardPresent()){
if (mfrc522.PICC_ReadCardSerial()) {
if(CompareVector(mfrc522.uid.uidByte, cdvl, 0, 4)) {
digitalWrite(Led_Verde, LOW);
delay(1000);
digitalWrite(Led_Verde, HIGH);
}
else {
digitalWrite(Led_Rosso, LOW);
delay(1000);
digitalWrite(Led_Rosso, HIGH);
}
}
}
mfrc522.PICC_HaltA();
mfrc522.PCD_StopCrypto1();
}
boolean CompareVector(byte *x, byte *z, byte inz, byte dv) {
byte j;
boolean flg = true;
for (j = inz; jif(x[j] != z[j]) flg = false;
}
return flg;
}
void VectorValue(char* code, byte *x) {
byte j=0;
for(byte i=0; i<8; i=i+2) {
x[j] = HextoDec(code[i], code[i+1]);
j=j+1;
}
}
byte HextoDec(char x, char y) {
byte h, l, r;
h = 0;
l = 0;
if(x>64) h = x - 55;
else h = x - 48;
if(y>64) l = y - 55;
else l = y - 48;
r = h*16 + l;
return r;
}