Access System
#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; }
Leave a Comment