# Arduino Ligando sensor de toque com teclado de membrana

**URL:** <https://forum.fazedores.com/t/arduino-ligando-sensor-de-toque-com-teclado-de-membrana/8920>\
**Category:** Arduino\
**Created:** [Janeiro 17, 2023, 8:54pm UTC](https://forum.fazedores.com/t/arduino-ligando-sensor-de-toque-com-teclado-de-membrana/8920 "2023-01-17T20:54:29Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Maria\_Ed](https://avatars.discourse-cdn.com/v4/letter/m/df788c/32.png) [@Maria\_Ed](https://forum.fazedores.com/u/Maria_Ed)\
**Post date:** [Janeiro 17, 2023, 8:54pm UTC](https://forum.fazedores.com/t/arduino-ligando-sensor-de-toque-com-teclado-de-membrana/8920/1 "2023-01-17T20:54:29Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![maxdesa](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.fazedores.com/maxdesa/32/2110_2.png) [@maxdesa](https://forum.fazedores.com/u/maxdesa)\
**Post date:** [Janeiro 19, 2023, 2:01pm UTC](https://forum.fazedores.com/t/arduino-ligando-sensor-de-toque-com-teclado-de-membrana/8920/2 "2023-01-19T14:01:14Z")

</div>

> [@Maria\_Ed](#):
>
> ```auto
> char leitura_teclas = teclado_personalizado.getKey(); // Atribui a variavel a leitura do teclado
> 
> ```

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

> [@Maria\_Ed](#):
>
> ```auto
> if (leitura_teclas) { // Se alguma tecla foi pressionada //TECLADO MATRICIAL
> 
> ```

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

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

```

Abraços  
Max
