#include <SPI.h>
#include <Wire.h>
#include <MFRC522.h>
#include <LiquidCrystal_I2C.h>
// Initialisation de l'écran LCD
LiquidCrystal_I2C lcd (0x27, 16, 2);
// Broches utilisées
#define SS_PIN 10
#define RST_PIN 9
#define LED_G 5
#define LED_R 4
#define RELAY1 6
// Création d'un objet MFRC522
MFRC522 mfrc522 (SS_PIN, RST_PIN);
// Ajoutez ici les numéros de cartes autorisées
String carteAutorisee1 = "2A 17 6E 3C";
String carteAutorisee2 = "XX XX XX XX"; // Ajoutez d'autres numéros de cartes au besoin
void setup()
{
// Initialisation de l'écran LCD
lcd.begin(16, 2); // Initialize the LCD
lcd.backlight();
// Affichage du message de démarrage
lcd.print ("ZENO MODIFF");
lcd.print("RFID LOCK");
lcd.setCursor(0, 1);
delay(1000);
lcd.clear();
// Initialisation de la communication SPI
SPI.begin();
// Initialisation du lecteur RFID
mfrc522.PCD_Init();
// Configuration des broches en sortie
pinMode(LED_G, OUTPUT);
pinMode(LED_R, OUTPUT);
pinMode(RELAY1, OUTPUT);
}
void loop()
{
// Affichage du message "PLACE YOUR RFID TAG" sur l'écran LCD
lcd.clear();
lcd.print("PLACE YOUR");
lcd.setCursor(0, 1);
lcd.print("RFID TAG");
delay(1000);
lcd.clear();
// Recherche de nouvelles cartes RFID
if (!mfrc522.PICC_IsNewCardPresent()) {
return;
}
// Sélection d'une carte RFID
if (!mfrc522.PICC_ReadCardSerial()) {
return;
}
// Lecture du contenu de la carte RFID
String content = "";
for (byte i = 0; i < mfrc522.uid.size; i++)
{
content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
content.concat(String(mfrc522.uid.uidByte[i], HEX));
}
content.toUpperCase();
// Vérification si la carte est autorisée
if (content.substring(1) == carteAutorisee1 || content.substring(1) == carteAutorisee2)
{ // Si la carte est autorisée, ouvrir la serrure et allumer la LED verte
lcd.clear();
lcd.print("AUTHORIZED ACCESS");
lcd.setCursor(0, 0);
delay(2000);
lcd.clear();
digitalWrite(RELAY1, HIGH);
digitalWrite(LED_G, HIGH);
delay(6000);
digitalWrite(RELAY1, LOW);
digitalWrite(LED_G, LOW);
delay(1000);
}
else
{
// Si la carte n'est pas autorisée, allumer la LED rouge
lcd.print("UNAUTHORIZED");
lcd.setCursor(0, 0);
digitalWrite(LED_R, HIGH);
delay(2000);
digitalWrite(LED_R, LOW);
lcd.clear();
delay(2000);
}
}