Arduino Ligando sensor de toque com teclado de membrana

Olá!
Estou realizando um projeto em que quero ligar um sensor touch capacitativo e um teclado de membrana 4X4, já testei ambos os códigos separadamente e funcionaram perfeitamente, porém quando juntei ambos não funciona muito bem. Aparentemente depois quando chega na parte do teclado ele para de funcionar, o o touch funciona. A programação é o seguinte:

Eu declaro o funcionamento do teclado e seus pinos. inicio o programa com o touch, se ele for accionado o programa inicia, se não, nada acontece. Se accionado o led liga e tudo inicia, teriamos duas opções de “cadastro”, se accionado 1 no teclado matricial ele pede o cpf e valida se é igual o definido, se clicar 2 ele lê a biometria(ainda não programado), se nenhum ele volta do inicio e pede novamente. O programa não lê o teclado e não exibe mais nada depois de pedir 1 ou 2, não sei mais o que fazer e sou iniciante, alguém pode me ajudar por favor?

#include <Password.h> // Biblioteca utilizada para controle de senha
#include <Keypad.h> // Biblioteca para controle do teclado de matrizes

const byte LINHAS = 4; // Linhas do teclado
const byte COLUNAS = 4; // Colunas do teclado
String leitura;
Password senha = Password(“25677032840”); // Senha utilizada para liberacao

const int pinoSensor = 11; //PINO DIGITAL UTILIZADO PELO SENSOR
const int pinoLed = 12; //PINO DIGITAL UTILIZADO PELO LED

const char TECLAS_MATRIZ[LINHAS][COLUNAS] = { // Matriz de caracteres (mapeamento do teclado)
{ ‘1’, ‘2’, ‘3’, ‘A’ },
{ ‘4’, ‘5’, ‘6’, ‘B’ },
{ ‘7’, ‘8’, ‘9’, ‘C’ },
{ ‘*’, ‘0’, ‘#’, ‘D’ }
};

const byte PINOS_LINHAS[LINHAS] = { 9, 8, 7, 6 }; // Pinos de conexao com as linhas do teclado
const byte PINOS_COLUNAS[COLUNAS] = { 5, 4, 3, 2 }; // Pinos de conexao com as colunas do teclado

Keypad teclado_personalizado = Keypad(makeKeymap(TECLAS_MATRIZ), PINOS_LINHAS, PINOS_COLUNAS, LINHAS, COLUNAS); // Inicia teclado

void setup() {
Serial.begin(9600);
Serial.println(“T.I.S.A.”);
pinMode(pinoSensor, INPUT); //DEFINE O PINO COMO ENTRADA
pinMode(pinoLed, OUTPUT); //DEFINE O PINO COMO SAÍDA
}

void loop() {

if (digitalRead(pinoSensor) == HIGH) { //SE A LEITURA DO PINO FOR IGUAL A HIGH - SENSOR TOQUE -
digitalWrite(pinoLed, HIGH); //ACENDE O LED
Serial.println(“Olá! Seja bem vindo(a).”);
delay(5000);
Serial.println(“Iniciando…”);
delay(5000);
Serial.println(“Você deseja se identificar por biometria ou CPF?”);
delay(500);
Serial.println(“1 - CPF”);
Serial.println(“2 - BIOMETRIA”);

char leitura_teclas = teclado_personalizado.getKey();  // Atribui a variavel a leitura do teclado


if (leitura_teclas) {  // Se alguma tecla foi pressionada  //TECLADO MATRICIAL

  if (leitura_teclas == '1') {

    Serial.println("Informe o CPF: ");

    if (leitura_teclas == 'C') {  // Se a tecla 'C' foi pressionada

      if (senha.evaluate()) {  // Verifica se a senha digitada esta correta

        Serial.println("Senha confirmada!");  // Exibe a mensagem que a senha esta correta
      } else {                                // Caso a senha esteja incorreta

        Serial.println("Senha incorreta!");  // Exibe a mensagem que a senha esta errada
      }
      senha.reset();  // Limpa a variavel senha
    } else {          // Caso outra tecla tenha sido pressionada

      Serial.println(leitura_teclas);  // Exibe a tecla pressionada
      senha.append(leitura_teclas);    // Salva o valor da tecla pressionada na variavel senha
    }
  }

 else if (leitura_teclas == '2') {
    Serial.println("Pressione o dedo no sensor biométrico");
  }

  else {
    Serial.println("Pressione apenas 1 ou 2");

    if (leitura_teclas == '1') {

      Serial.println("Informe o CPF: ");

      if (leitura_teclas == 'C') {  // Se a tecla 'C' foi pressionada

        if (senha.evaluate()) {  // Verifica se a senha digitada esta correta

          Serial.println("Senha confirmada!");  // Exibe a mensagem que a senha esta correta
        } else {                                // Caso a senha esteja incorreta

          Serial.println("Senha incorreta!");  // Exibe a mensagem que a senha esta errada
        }
        senha.reset();  // Limpa a variavel senha
      } else {          // Caso outra tecla tenha sido pressionada

        Serial.println(leitura_teclas);  // Exibe a tecla pressionada
        senha.append(leitura_teclas);    // Salva o valor da tecla pressionada na variavel senha
      }
    }

    if (leitura_teclas == '2') {
      Serial.println("Pressione o dedo no sensor biométrico");
    }
  }
}

}
// fim pinsensor
//TECLADO ACABA AQUI
else { //SENÃO, FAZ
digitalWrite(pinoLed, LOW); //APAGA O LED
}
delay(200); //INTERVALO DE 200 MILISSEGUNDOS

} //fim loop

1 curtida

Bom dia @Maria_Ed entao na variavel acima ("leitura_teclas ") vc a definiu como do tipo char, quando vc faz algo do tipo abaixo:

Vc esta pedindo para uma variável char dar um retorno de TRUE ou FALSE que no caso seria os valores de uma variável do tipo bool, ou seja , ele nunca irá entrar nesse IF pois leitura_teclas será sempre false por erro.
Como sugestão pediria para vc trocar esse IF por algo estilo

if (leitura_teclas != '') { // Se alguma tecla foi pressionada  //TECLADO MATRICIAL

Abraços
Max