#include <SPI.h>
#include <MFRC522.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

#define SS_PIN 10
#define RST_PIN 9

MFRC522 mfrc522(SS_PIN, RST_PIN); 

LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3, POSITIVE);

char st[20];

void setup() 
{
  Serial.begin(9600);
  SPI.begin();   
  mfrc522.PCD_Init();
  Serial.println("Aproxime o seu cartao do leitor...");
  Serial.println();
  //Define o n�mero de colunas e linhas do LCD:  
  lcd.begin(16, 2);  
  lcd.setBacklight(HIGH);
  mensageminicial();
}

void loop() 
{
  if ( ! mfrc522.PICC_IsNewCardPresent()) 
  {
    return;
  }
  if ( ! mfrc522.PICC_ReadCardSerial()) 
  {
    return;
  }
  Serial.print("UID da tag :");
  String conteudo= "";
  byte letra;
  for (byte i = 0; i < mfrc522.uid.size; i++) 
  {
     Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
     Serial.print(mfrc522.uid.uidByte[i], HEX);
     conteudo.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
     conteudo.concat(String(mfrc522.uid.uidByte[i], HEX));
  }
  Serial.println();
  Serial.print("Mensagem : ");
  conteudo.toUpperCase();
  if (conteudo.substring(1) == "F9 3C AC 29") //UID 0 - Chaveiro
  {
    mostrar("Ola Victor!");
    mensageminicial();
  }
  else if (conteudo.substring(1) == "75 DD AB 29") //UID 1 - Chaveiro
  {
    mostrar("Ola Beatriz!");
    mensageminicial();
  }
  else if (conteudo.substring(1) == "37 26 AC 29") //UID 2 - Chaveiro
  {
    mostrar("Ola Camila!");
    mensageminicial();
  }
  else if (conteudo.substring(1) == "E6 91 AB 29") //UID 3 - Chaveiro
  {
    mostrar("Ola Daniele!");
    mensageminicial();
  }
  else if (conteudo.substring(1) == "0A 36 AC 29") //UID 4 - Chaveiro
  {
    mostrar("Ola Diego!");
    mensageminicial();
  }
    else if (conteudo.substring(1) == "90 43 AC 29") //UID 5 - Chaveiro
  {
    mostrar("Ola Eduardo M!");
    mensageminicial();
  }
  else if (conteudo.substring(1) == "22 27 AD 29") //UID 6 - Chaveiro
  {
    mostrar("Ola Eduardo P!");
    mensageminicial();
  }
  else if (conteudo.substring(1) == "35 53 AC 29") //UID 7 - Chaveiro
  {
    mostrar("Ola Gabriela!");
    mensageminicial();
  }
    else if (conteudo.substring(1) == "18 89 AB 29") //UID 8 - Chaveiro
  {
    mostrar("Ola Gabriel!");
    mensageminicial();
  }
    else if (conteudo.substring(1) == "6E 62 AD 29") //UID 9 - Chaveiro
  {
    mostrar("Ola Gustavo!");
    mensageminicial();
  }
    else if (conteudo.substring(1) == "3D 26 DA 52") //UID 10 - Chaveiro
  {
    mostrar("Ola Pereira!");
    mensageminicial();
  }
    else if (conteudo.substring(1) == "87 D3 AB 29") //UID 11 - Chaveiro
  {
    mostrar("Ola Isabelle!");
    mensageminicial();
  }
    else if (conteudo.substring(1) == "76 99 AB 29") //UID 12 - Chaveiro
  {
    mostrar("Ola Joao L!");
    mensageminicial();
  }
    else if (conteudo.substring(1) == "09 6C AB 29") //UID 13 - Chaveiro
  {
    mostrar("Ola Joao M!");
    mensageminicial();
  }
    else if (conteudo.substring(1) == "7E D3 AB 29") //UID 14 - Chaveiro
  {
    mostrar("Ola Juliana!");
    mensageminicial();
  }
    else if (conteudo.substring(1) == "79 39 AC 29") //UID 15 - Chaveiro
  {
    mostrar("Ola Kauan!");
    mensageminicial();
  }
    else if (conteudo.substring(1) == "FE D4 AB 29") //UID 16 - Chaveiro
  {
    mostrar("Ola Larissa!");
    mensageminicial();
  }
    else if (conteudo.substring(1) == "77 7F AC 29") //UID 17 - Chaveiro
  {
    mostrar("Ola Leonel!");
    mensageminicial();
  }
    else if (conteudo.substring(1) == "C6 5F AC 29") //UID 18 - Chaveiro
  {
    mostrar("Ola leticia!");
    mensageminicial();
  }
    else if (conteudo.substring(1) == "21 22 AD 29") //UID 19 - Chaveiro
  {
    mostrar("Ola Lucas!");
    mensageminicial();
  }
    else if (conteudo.substring(1) == "B4 8B AB 29") //UID 20 - Chaveiro
  {
    mostrar("Ola Marccus!");
    mensageminicial();
  }
    else if (conteudo.substring(1) == "4B 22 AD 29") //UID 21 - Chaveiro
  {
    mostrar("Ola Duda!");
    mensageminicial();
  }
    else if (conteudo.substring(1) == "50 31 AE 29") //UID 22 - Chaveiro
  {
    mostrar("Ola Miguel!");
    mensageminicial();
  }
    else if (conteudo.substring(1) == "E1 A3 AB 29") //UID 23 - Chaveiro
  {
    mostrar("Ola Noemia!");
    mensageminicial();
  }
    else if (conteudo.substring(1) == "A3 D3 AB 29") //UID 24 - Chaveiro
  {
    mostrar("Ola Rafael!");
    mensageminicial();
  }
    else if (conteudo.substring(1) == "B4 7B AC 29") //UID 25 - Chaveiro
  {
    mostrar("Ola Stefany!");
    mensageminicial();
  }
  else 
  {
    lcd.setBacklight(HIGH);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Tag n�o cadastrada !");
    lcd.setCursor(0,1);
    lcd.print("Acesso Negado !");
    delay(3000);
    mensageminicial();
  }
  delay(3000);
} 

void mensageminicial()
{
  lcd.setBacklight(HIGH);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print(" Aproxime o seu");  
  lcd.setCursor(0,1);
  lcd.print("cartao do leitor");  
}

void mostrar(String m)
{
    Serial.println(m);
    Serial.println("ACESSO LIBERADO!");
    Serial.println();
    lcd.setBacklight(HIGH);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(m);
    delay(2000);
    lcd.setCursor(0,1);
    lcd.print("Acesso liberado!");
    delay(3000);
}