//Inclui as bibliotecas do SPI e do RC522
#include <SPI.h>
#include <MFRC522.h>
//Definição dos pinos de conexão do projeto
#define PINO_SS 21
#define PINO_RST 22
int led1= 33;
int led2 = 32;
int buzzer = 14;
//Cria o item para configurar o módulo RC522
MFRC522 mfrc522(PINO_SS, PINO_RST);
int tentativasInvalidas = 0;
void setup() {
Serial.begin(115200); // Inicializa a serial
SPI.begin();// Inicializa a comunicação SPI
mfrc522.PCD_Init(); // Inicializa o módulo MFRC522
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(buzzer, OUTPUT);
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
digitalWrite(buzzer, LOW);
Serial.println("Sistema Inicializado: Aproxime o token");
}
void loop() {
if (!mfrc522.PICC_IsNewCardPresent()) return;// Aguarda a aproximação do token
if (!mfrc522.PICC_ReadCardSerial()) return; // Seleciona qual token vai ser utilizado
Serial.print("UID da tag:"); // Mostra UID do token na serial
String conteudo= ""; //Cria uma variável vazia, do tipo string
byte letra;
for (byte i = 0; i < mfrc522.uid.size; i++) {
if(mfrc522.uid.uidByte[i] < 0x10){
Serial.print(" 0");
}
else{
Serial.print(" ");
}
Serial.print(mfrc522.uid.uidByte[i], HEX);// Printa a mensagem convertida em hexadecimal
if(mfrc522.uid.uidByte[i] < 0x10){
conteudo.concat(String(" 0"));
}
else{
conteudo.concat(String(" "));
}
conteudo.concat(String(mfrc522.uid.uidByte[i], HEX)); }
Serial.println();
conteudo.toUpperCase();//Coloca todas as letras da string em maiúscula
if (conteudo.substring(1) == "83 9C BD 0B") {
Serial.println("Acesso Permitido!");
digitalWrite(led2, LOW);
digitalWrite(led1, HIGH);
delay(10000);
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
tentativasInvalidas = 0;
}
else {
tentativasInvalidas++;
Serial.println("Cartão inválido");
for (int i = 0; i < 3; i++) {
digitalWrite(led2, LOW);
delay(300);
digitalWrite(led2, HIGH);
delay(300);
}
}
if(tentativasInvalidas >=5){
Serial.println("SISTEMA BLOQUEADO!");
for(int i = 0; i < 30;i++) {
digitalWrite(led2, HIGH);
digitalWrite(buzzer, HIGH);
delay(200);
digitalWrite(led2, LOW);
digitalWrite(buzzer, LOW);
delay(200);
}
// tentativasInvalidas =0;
digitalWrite(led2, HIGH);
}
delay(1000);
}