#include <BluetoothSerial.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
#include <vector>
#include <iostream>
LiquidCrystal_I2C lcd(0x27, 20, 4);
const uint8_t ROWS = 4;
const uint8_t COLS = 4;
char keys[ROWS][COLS] = {
{ '1', '2', '3', 'A' },
{ '4', '5', '6', 'B' },
{ '7', '8', '9', 'C' },
{ '*', '0', '#', 'D' }
};
uint8_t colPins[COLS] = {26, 25, 33, 32};
uint8_t rowPins[ROWS] = {13, 12, 14, 27};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
std::vector<String> senha= {"C","A","1","2"};
std::vector<String> senha_digitada;
std::vector<int> posicao;
std::vector<int> tentativas;
void setup() {
Serial.begin(115200);
lcd.init();
lcd.backlight();
}
void Detectar_tecla(){
char key = keypad.getKey();
lcd.setCursor(0,0);
lcd.print("Digite a senha:");
lcd.setCursor(0,2);
lcd.print("Procurando cartão...");
if (key != NO_KEY) {
Serial.println(key);
if (senha_digitada.size() < 4){
int posicao_atual= 15 + senha_digitada.size();
lcd.setCursor(posicao_atual, 0);
lcd.print("*");
senha_digitada.push_back(String(key));
posicao.push_back(1);
}
// lcd.print("*");
}
if (senha_digitada.size() == senha.size()){
if (senha_digitada == senha){
Serial.println("Senha correta");
lcd.setCursor(0,1);
lcd.print("SENHA CORRETA!");
}
else{
Serial.println("Senha incorreta");
lcd.setCursor(0,1);
lcd.print("SENHA INCORRETA!");
tentativas.push_back(1);
}
switch(tentativas.size()){
case 2:
Serial.println("Tentativa de arrombamento de nivel 1 detectada!");
Serial.println("Soando alarme!");
tone(5, 300);
delay(1000);
noTone(5);
delay(1000);
tone(5, 300);
delay(1000);
noTone(5);
delay(1000);
break;
}
delay(2000);
senha_digitada.clear();
lcd.clear();
}
}
void loop() {
Detectar_tecla();
}