Access System
unknown
plain_text
10 months ago
3.3 kB
8
Indexable
#include <SPI.h>
#include <MFRC522.h>
#include <LiquidCrystal_I2C.h>
// RFID Pins
#define RST_PIN 9
#define SS_PIN 10
// LEDs and Buzzer Pins
#define BlueLED 2
#define GreenLED 3
#define RedLED 4
#define Buzzer 5
// RFID and LCD objects
MFRC522 mfrc522(SS_PIN, RST_PIN);
LiquidCrystal_I2C lcd(0x3F, 16, 2);
// Master Tag UID (replace with your MasterTag from the first code)
String MasterTag = "D7 F5 79 C9"; // Replace this
String UIDCard = "";
// Function declarations
boolean getUID();
void setup() {
// Initialize serial monitor
Serial.begin(9600);
// Initialize RFID reader
SPI.begin();
mfrc522.PCD_Init();
Serial.println("RFID Reader Initialized!");
// Initialize LCD
lcd.init();
lcd.backlight();
lcd.clear();
lcd.print(" Scan Your Card");
lcd.setCursor(0, 1);
lcd.print(" On Reader");
// Initialize LEDs and Buzzer
pinMode(BlueLED, OUTPUT);
pinMode(GreenLED, OUTPUT);
pinMode(RedLED, OUTPUT);
pinMode(Buzzer, OUTPUT);
// Default state
digitalWrite(BlueLED, HIGH); // Blue LED ON to indicate waiting for scan
digitalWrite(GreenLED, LOW);
digitalWrite(RedLED, LOW);
noTone(Buzzer);
Serial.println("System Ready. Waiting for card scan...");
}
void loop() {
// Default waiting state
digitalWrite(BlueLED, HIGH); // Blue LED ON when idle
digitalWrite(GreenLED, LOW);
digitalWrite(RedLED, LOW);
// Check for RFID card
if (getUID()) {
Serial.print("Card Scanned! UID: ");
Serial.println(UIDCard);
lcd.clear();
lcd.setCursor(2, 0);
lcd.print(" Permission");
lcd.setCursor(0, 1);
if (UIDCard == MasterTag) {
// Access Granted
Serial.println("Access Granted");
lcd.print(" Access Granted");
digitalWrite(BlueLED, LOW); // Blue LED OFF
digitalWrite(GreenLED, HIGH); // Green LED ON
digitalWrite(RedLED, LOW); // Red LED OFF
tone(Buzzer, 2000, 500); // Beep
delay(3000); // Wait for 3 seconds
} else {
// Access Denied
Serial.println("Access Denied!");
lcd.print(" Access Denied!");
digitalWrite(BlueLED, LOW); // Blue LED OFF
digitalWrite(GreenLED, LOW); // Green LED OFF
// Blink Red LED
for (int i = 0; i < 5; i++) {
digitalWrite(RedLED, HIGH);
tone(Buzzer, 2000, 250); // Beep
delay(250);
digitalWrite(RedLED, LOW);
delay(250);
}
}
// Reset to default state
lcd.clear();
lcd.print(" Please");
lcd.setCursor(0, 1);
lcd.print(" Scan Your Card");
digitalWrite(BlueLED, HIGH); // Blue LED back ON
digitalWrite(GreenLED, LOW); // Green LED OFF
digitalWrite(RedLED, LOW); // Red LED OFF
Serial.println("System reset. Waiting for next card...");
}
}
// Function to get UID of scanned card
boolean getUID() {
if (!mfrc522.PICC_IsNewCardPresent()) {
return false; // No card detected
}
if (!mfrc522.PICC_ReadCardSerial()) {
return false; // Unable to read card
}
// Get UID
UIDCard = "";
for (byte i = 0; i < mfrc522.uid.size; i++) {
UIDCard.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
UIDCard.concat(String(mfrc522.uid.uidByte[i], HEX));
}
UIDCard.toUpperCase();
UIDCard = UIDCard.substring(1);
mfrc522.PICC_HaltA(); // Halt communication
return true;
}Editor is loading...
Leave a Comment