Teclado é um dispositivo de entrada de dados em computadores que segundo a wikipedia possui uma série de botões e teclas. Cada botão/tecla é atribuído à uma determinada letra ou símbolo, portanto o computador precisa saber qual tecla está sendo pressionada em determinado momento.   teclado de computador

   A forma mais usual (e mais segura) de saber qual tecla foi pressionada é através de organização destas em matriz, onde cada tecla muda o estado digital (0 e 1) de apenas uma linha e uma coluna. Porém outras formas de organização existem, como por exemplo charlieplexing onde a mesma matriz é otimizada para economizar pinos de entrada do sistema/controlador.

   Outra forma de economizar pinos em teclados é conecta-los com resistores diversos, de forma que o pressionar de cada tecla produza um valor analógico único e identificável; é justamente este método que vamos aprender hoje (e chamaremos de teclado analógico). Utilizaremos um Arduino UNO e um teclado simples, conforme imagem abaixo.

diagrama esquematico teclado analógico

 O segredo está em criar um divisor resistivo (dois resistores em série) toda vez que uma tecla for pressionada. Utilizamos também resistores de valores diferentes para cada tecla, afim de que cada valor analógico resultante seja único e exclusivo.

   Eu escolhi os valores de resistores baseado em dois pontos:

  • Valores comerciais disponíveis
  • Valores distantes entre sí o suficiente para deixar margem de leitura para a entrada analógica do Arduino.

   Observação: para melhorar a rejeição de ruído (debounce) no pressionar das teclas eu inseri um capacitor cerâmico de  100nF entre a saída analógica e o GND. No caso do meu protótipo ajudou muito.

   A tabela de resistências, suas tensões e inteiros equivalentes está abaixo:

tabela de valores analógicos do teclado

Já o gráfico das tensões (retirado da tabela acima) fica assim. Observe que cada ponto azul representa uma tecla sendo pressionada.

tensoes obtidas com teclado analogico

 

   Implementei o circuito do teclado analógico em uma placa de protótipos e utilizando resistores SMD (montados em superfície), porém nada impede de você montar sua versão com os componentes que tiver em sua casa!.

face-frontal-teclado-analogico

face-traseira-teclado-analogico

setup-teste-teclado-analogico

   O sketch do nosso teclado analógico exige alguns cuidados, principalmente tempo de debounce (tempo de “acomodação” do sinal analógico após pressionar as teclas) e a utilização de uma faixa de leitura analógica para cada tecla, ao invés de esperar por um valor único e fixo.

   O debounce é resolvido com um tempo em espera de 0,15 segundos no código delay(150); já a faixa de leitura analógica para cada tecla foi obtida empiricamente, e fica na faixa de 20 a 50 inteiros (0,097V e 0,24V).

   Observe o sketch abaixo. Nele é implementado todo o código que faz a leitura da tecla pressionada e imprime o número da tecla correspondente no monitor serial. Portanto para este teste é necessário que seu Arduino esteja conectado ao computador via porta USB/serial.

   O resultado da execução do sketch é visto abaixo. Toda vez que se pressiona uma tecla o texto “Tecla x” é exibido no monitor serial.

tela monstrando as teclas pressionandas

  A partir deste sketch você pode desenvolver suas próprias lógicas para utilizar o teclado analógico, atribuindo (por exemplo) valores para a variável “entrouX” e tomando ações de acordo. As possibilidades são imensas, e o melhor de tudo é que você está utilizando somente um pino do seu Arduino!.

Teclado analógico com Arduino

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Solve : *
15 + 29 =