/*
* This ESP32 code is created by esp32io.com
*
* This ESP32 code is released in the public domain
*
* For more detail (instruction and wiring diagram), visit https://esp32io.com/tutorials/esp32-keypad-lcd
*/
#include <Keypad.h>
#include <LiquidCrystal_I2C.h>
char teclas[4][4] =
{
{'1','2','3', 'A'},
{'4','5','6', 'B'},
{'7','8','9', 'C'},
{'*','0','#', 'D'}
};
byte PinosLinha[4] = {14,13,12,15};
byte PinosColuna[4] = {27,26,25,33};
char tecla;
char teclaC;
byte posColuna = 6;
char senha[4] = {0};
Keypad keypad = Keypad(makeKeymap(teclas), PinosLinha, PinosColuna, 4, 4);
LiquidCrystal_I2C lcd(0x27, 16, 2);
int ColunaCursor = 0;
int cont = 0;
void setup()
{
lcd.init(); //Inicialização do display 16x2
lcd.backlight(); //Ativa o backlight
lcd.setCursor(0,0);
lcd.print("Digite uma senha");
Serial.begin(9600);
}
void loop()
{
do
{
tecla = keypad.getKey();
if(isDigit(tecla) && cont < 4)
{
senha[cont] = tecla;
cont++;
lcd.setCursor(posColuna,1);
lcd.print('*');
posColuna++;
}
if(tecla == 'D')
{
lcd.setCursor(0,1);
lcd.print(" "); //Limpa a linha 2
cont = 0; //Zera a contagem para que possamos iniciar o processo de inserir uma nova senha a partir da posição inicial do vetor
posColuna = 6;
for(int pos; pos < 4; pos++) //Limpa as posições do meu vetor e coloca caractere 0 em todas as posições.
{
senha[pos] = '0';
}
}
}
while(tecla != 'A');
Serial.println("Saiu do laço. Terminou de digitar a senha!");
if(senha[0] == '1' && senha[1] == '4' && senha[2] == '5' && senha[3] == '3')
{
lcd.clear();
lcd.setCursor(1,0);
lcd.print("Senha correta!");
lcd.setCursor(3,1);
lcd.print("Liberado!");
}
else
{
lcd.clear();
lcd.setCursor(1,0);
lcd.print("Senha errada!");
lcd.setCursor(1,1);
lcd.print("Acesso negado!");
}
do
{
teclaC = keypad.getKey();
}while(teclaC != 'C');
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Digite uma senha");
cont = 0; //Zera a contagem para que possamos iniciar o processo de inserir uma nova senha a partir da posição inicial do vetor
posColuna = 6;
//Validaçao da senha e verificar se a senha digitada é a correta.
}