#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 rfid(SS_PIN, RST_PIN);
Servo lockServo;
const int greenLED = 6;
const int redLED = 7;
const int buzzerPin = 5;
// Authorized UID (replace with your card)
byte authorizedUID[] = {0xA1, 0xB2, 0xC3, 0xD4};
void setup() {
Serial.begin(9600);
SPI.begin();
rfid.PCD_Init();
lockServo.attach(3);
lockServo.write(0);
pinMode(greenLED, OUTPUT);
pinMode(redLED, OUTPUT);
pinMode(buzzerPin, OUTPUT);
Serial.println("RFID Door Lock Ready");
}
bool checkUID(byte *uid, byte size) {
if (size != 4) return false;
for (byte i = 0; i < 4; i++) {
if (uid[i] != authorizedUID[i]) return false;
}
return true;
}
void loop() {
if (!rfid.PICC_IsNewCardPresent() || !rfid.PICC_ReadCardSerial()) return;
Serial.print("UID: ");
for (byte i = 0; i < rfid.uid.size; i++) {
Serial.print(rfid.uid.uidByte[i], HEX);
Serial.print(" ");
}
Serial.println();
if (checkUID(rfid.uid.uidByte, rfid.uid.size)) {
Serial.println("ACCESS GRANTED");
digitalWrite(greenLED, HIGH);
lockServo.write(90);
delay(5000);
lockServo.write(0);
digitalWrite(greenLED, LOW);
} else {
Serial.println("ACCESS DENIED");
digitalWrite(redLED, HIGH);
for (int i = 0; i < 3; i++) {
digitalWrite(buzzerPin, HIGH);
delay(200);
digitalWrite(buzzerPin, LOW);
delay(100);
}
digitalWrite(redLED, LOW);
}
rfid.PICC_HaltA();
rfid.PCD_StopCrypto1();
}