I connected to my board lcd screen and a rfid scanner(MFRC522) I want that when i scan the tag that registered in the code on the lcd there will be text "Welcome" and then clear it but when i do it its only adding a weird symbol after "Welcome" and the same on unregistered tags...
#include <RFID.h>
#include <LiquidCrystal.h>
#include <SPI.h>
#include <RFID.h>
#define SS_PIN 10
#define RST_PIN 9
RFID rfid(SS_PIN, RST_PIN);
const int rs = 1, en = 8, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
int led1 = 7;
int led2 = 6;
int power = 8;
int serNum[5];
int cards[][5] = {
{ 104, 102, 176, 121, 199
}
};
bool access = false;
void setup() {
lcd.begin(16, 2);
Serial.begin(9600);
SPI.begin();
rfid.init();
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
}
void loop() {
if (rfid.isCard()) {
if (rfid.readCardSerial()) {
Serial.print(rfid.serNum[0]);
Serial.print(" ");
Serial.print(rfid.serNum[1]);
Serial.print(" ");
Serial.print(rfid.serNum[2]);
Serial.print(" ");
Serial.print(rfid.serNum[3]);
Serial.print(" ");
Serial.print(rfid.serNum[4]);
Serial.println("");
for (int x = 0; x < sizeof(cards); x++) {
for (int i = 0; i < sizeof(rfid.serNum); i++ ) {
if (rfid.serNum[i] != cards[x][i]) {
access = false;
break;
} else {
access = true;
}
}
if (access) break;
}
}
if (access) {
digitalWrite(led1, HIGH);
delay(1000);
digitalWrite(led1, LOW);
lcd.print("Welcome");
delay(2500);
lcd.clear();
} else {
digitalWrite(led2, HIGH);
delay(1000);
digitalWrite(led2, LOW);
lcd.print("Tag not registered");
delay(2500);
lcd.clear();
}
}
rfid.halt();
}