// Autor / Auteur : Zineb KANDOUSSI (https://www.facebook.com/SchoolSurSeineFR/)
// Creation / Création : Le 14/03/2023
// Description : RFID tags/cards verification using the RFID reader / vérification des badges/cartes RFID à l'aide du lecteur RFID 

#include <SPI.h>
#include <MFRC522.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

// You can watch this video to get your own RFID tag/card number (UID):
// https://www.youtube.com/watch?v=tQ5MZ7sGGNE 

const byte monUID[4] = {60, 203, 205, 33};
bool valid=true;
#define PIN_LED_ROUGE 7
#define PIN_LED_VERTE 6
#define PIN_RST 9
#define PIN_SDA 10

LiquidCrystal_I2C lcd(0x27, 16, 2);
MFRC522 rfid(PIN_SDA, PIN_RST);

void setup()
{ 
  SPI.begin();
  rfid.PCD_Init();  
  pinMode(PIN_LED_ROUGE, OUTPUT);
  pinMode(PIN_LED_VERTE, OUTPUT);

  lcd.init();
  lcd.init();
  lcd.backlight();   
  lcd.setCursor(0, 0);         
  lcd.print("School Sur Seine :)");        
  delay(5000);
  lcd.clear();
}
void loop()
{

if (rfid.PICC_IsNewCardPresent()) 
{
  if (rfid.PICC_ReadCardSerial()) 
    {
    for (int i = 0; i < rfid.uid.size; i++) 
    {
    if (rfid.uid.uidByte[i] != monUID[i]) 
      {valid=false;}
    else 
      {valid=true;}
    }
    if (valid == 1) 
      {
      digitalWrite(PIN_LED_VERTE, HIGH);
      lcd.print("Badge valide :)");
      delay(1000);
      lcd.clear();
      digitalWrite(PIN_LED_VERTE, LOW);     
      }
    else // UID non valide
      { 
      digitalWrite(PIN_LED_ROUGE, HIGH);
      lcd.print("Badge non valide :(");
      delay(1000);
      digitalWrite(PIN_LED_ROUGE, LOW);
      lcd.clear();
      }
    }
}
}
