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