#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Keypad.h>
#define SCREEN_WIDTH 128 // Largura do display OLED em pixels
#define SCREEN_HEIGHT 64 // Altura do display OLED em pixels
#define OLED_RESET -1 // Reset do display OLED (não utilizado)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
const byte LINHAS = 4; // Número de linhas da matriz
const byte COLUNAS = 4; // Número de colunas da matriz
char teclas[LINHAS][COLUNAS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte linhasPinos[LINHAS] = {9, 8, 7, 6}; // Pinos conectados às linhas da matriz
byte colunasPinos[COLUNAS] = {5, 4, 3, 2}; // Pinos conectados às colunas da matriz
Keypad teclado = Keypad(makeKeymap(teclas), linhasPinos, colunasPinos, LINHAS, COLUNAS);
char senhaCorreta[] = "1234"; // Senha correta
char entradaSenha[5]; // Buffer para a senha inserida
void setup() {
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // Inicia o display OLED
display.display(); // Exibe as configurações iniciais
delay(2000); // Delay para visualização
display.clearDisplay(); // Limpa o display
display.setTextSize(1); // Configura o tamanho do texto
display.setTextColor(SSD1306_WHITE); // Configura a cor do texto
display.setCursor(0,0); // Configura a posição do cursor
}
void loop() {
char tecla = teclado.getKey();
if (tecla != NO_KEY) {
display.clearDisplay(); // Limpa o display
if (strlen(entradaSenha) < 4) {
entradaSenha[strlen(entradaSenha)] = tecla;
display.print("Senha Atual: ");
display.println(entradaSenha);
}
if (strlen(entradaSenha) == 4) {
if (strcmp(entradaSenha, senhaCorreta) == 0) {
display.println("Senha correta!");
// Faça algo quando a senha estiver correta
} else {
display.println("Senha incorreta! Tente novamente.");
// Faça algo quando a senha estiver incorreta
}
// Limpa o buffer da senha
memset(entradaSenha, 0, sizeof(entradaSenha));
}
display.display(); // Exibe a mensagem no display
delay(1000); // Delay para visualização da mensagem
display.clearDisplay(); // Limpa o display
display.setCursor(0,0);
}
}