#include <SPI.h>
#include <MFRC522.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define SS_PIN 10
#define RST_PIN 9
#define GREEN_LED 7
#define RED_LED 6
#define BUZZER 8
MFRC522 rfid(SS_PIN, RST_PIN);
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Authorized RFID UID
String authorizedUID = "55 66 77 88";
void setup() {
Serial.begin(9600);
SPI.begin();
rfid.PCD_Init();
lcd.init();
lcd.backlight();
pinMode(GREEN_LED, OUTPUT);
pinMode(RED_LED, OUTPUT);
pinMode(BUZZER, OUTPUT);
lcd.setCursor(0, 0);
lcd.print("Smart Attendance");
lcd.setCursor(0, 1);
lcd.print("Scan Your Card");
Serial.println("System Ready");
}
void loop() {
// Wait for RFID card
if (!rfid.PICC_IsNewCardPresent()) {
return;
}
if (!rfid.PICC_ReadCardSerial()) {
return;
}
String cardUID = "";
// Read UID
for (byte i = 0; i < rfid.uid.size; i++) {
cardUID += String(rfid.uid.uidByte[i] < 0x10 ? " 0" : " ");
cardUID += String(rfid.uid.uidByte[i], HEX);
}
cardUID.toUpperCase();
cardUID.trim(); //Clean fix: removes any accidental trailing spaces
Serial.print("Card UID:");
Serial.println(cardUID);
// Authorized Card
if (cardUID == authorizedUID)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Welcome Jessica");
lcd.setCursor(0,1);
lcd.print("Attendance OK");
digitalWrite(RED_LED, LOW);
digitalWrite(GREEN_LED,HIGH);
tone(BUZZER, 1000);
Serial.println("Jessica Present");
delay(2000);
digitalWrite(GREEN_LED,LOW);
noTone(BUZZER);
}
else {
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Access Denied");
digitalWrite(RED_LED,HIGH);
tone(BUZZER, 500);
Serial.println("Unauthorized Access");
delay(2000);
digitalWrite(GREEN_LED,LOW);
digitalWrite(RED_LED,HIGH);// Turn RED OFF after delay
noTone(BUZZER);
}
//reset the screen back to the standard idle state
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Scan Your Card");
rfid.PICC_HaltA();
}
Loading
mfrc522
mfrc522