#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>
#define SS_PIN 10
#define RST_PIN 9
#define GREEN_LED 4
#define RED_LED 5
#define SERVO_PIN 6
MFRC522 mfrc522(SS_PIN, RST_PIN);
Servo gateServo;
// CHANGE THIS TO YOUR CARD UID
byte authorizedUID[] = {0x11, 0x22, 0x33, 0x44};
void setup() {
Serial.begin(9600);
SPI.begin();
mfrc522.PCD_Init();
pinMode(GREEN_LED, OUTPUT);
pinMode(RED_LED, OUTPUT);
gateServo.attach(SERVO_PIN);
gateServo.write(0); // Gate closed
Serial.println("RFID Gate System Ready");
}
void loop() {
if (!mfrc522.PICC_IsNewCardPresent()) return;
if (!mfrc522.PICC_ReadCardSerial()) return;
Serial.print("UID: ");
for (byte i = 0; i < mfrc522.uid.size; i++) {
Serial.print(mfrc522.uid.uidByte[i], HEX);
Serial.print(" ");
}
Serial.println();
if (isAuthorized()) {
accessGranted();
} else {
accessDenied();
}
mfrc522.PICC_HaltA();
}
bool isAuthorized() {
if (mfrc522.uid.size != 4) return false;
for (byte i = 0; i < 4; i++) {
if (mfrc522.uid.uidByte[i] != authorizedUID[i]) {
return false;
}
}
return true;
}
void accessGranted() {
Serial.println("Access Granted");
digitalWrite(GREEN_LED, HIGH);
digitalWrite(RED_LED, LOW);
gateServo.write(90); // Open gate
delay(3000);
gateServo.write(0); // Close gate
delay(500);
digitalWrite(GREEN_LED, LOW);
}
void accessDenied() {
Serial.println("Access Denied");
digitalWrite(RED_LED, HIGH);
delay(2000);
digitalWrite(RED_LED, LOW);
}
Loading
mfrc522
mfrc522