#include <Keypad.h>

#define ROW_NUM     4 // quatro linhas
#define COLUMN_NUM  4 // quatro colunas

char pass[] = {'1', '5', '5'};
char keys[ROW_NUM][COLUMN_NUM] = {
  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', 'D'}
};

byte pin_rows[ROW_NUM]      = {26, 25, 33, 32}; // Conecte GPIO19, GPIO18, GPIO5, GPIO17 às linhas
byte pin_column[COLUMN_NUM] = {13, 12, 14, 27};   // Conecte GPIO16, GPIO4, GPIO0, GPIO2 às colunas

Keypad keypad = Keypad( makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM );
  
byte pin_rows[ROW_NUM] = { 34, 35, 32, 33 };

byte pin_column[COLUMN_NUM] = { 27, 14, 12, 13 };



int keyPress = 0;

void setup() {
  // Inicialização do código aqui, para ser executado uma vez:
  Serial.begin(115200);
  Serial.println("Olá, ESP32!");
}

void loop() {
  char key = keypad.getKey();
  if (key) {
    if (key == pass[keyPress]) {
      Serial.print("Tecla permitida pressionada: ");
      Serial.println(key);
      
      keyPress++; // Avança para a próxima sequência
      
      // Verifica se a sequência foi concluída
      if (keyPress >= sizeof(pass)) {
        Serial.println("Sequência de teclas correta!");
        keyPress = 0; // Reinicia a sequência
      }
    } else {
      // Tecla pressionada está errada, redefina a sequência
      keyPress = 0;
      Serial.println("Tecla incorreta. Reiniciando a sequência.");
    }
  }
}
$abcdeabcde151015202530fghijfghij