Teclado Numérico Matricial com Arduino

Neste artigo vou lhe ensinar a utilizar um teclado numérico matricial de 12 ou 16 teclas com o Arduino. Vamos começar pela teoria e ao final apresentar um exemplo de utilização do teclado matricial com o Arduino Uno.

 

  E esse tecladão ai, como eu ligo?

 

Os teclados matriciais são muito utilizados em aparelhos onde o usuário precisar interagir com um sistema. Por exemplo, no caso de um cofre eletrônico, fechaduras eletrônicas ou calculadoras.

Para demonstrar essa técnica de leitura utilizaremos um teclado matricial de membrana 4×4 (16 teclas) junto com um Arduino.

Na Figura 1, você pode ver como é um dos modelos de teclado matricial 4×4.

 

teclado numérico matricial tipo membrana
Figura 1: Teclado matricial de 16 botões tipo membrana, da Parallax.

 

Este teclado é formado de botões organizados em linhas e colunas de modo a formar uma matriz. Quando pressionado, um botão conecta a linha com a coluna na qual está ligado. A organização das conexões você pode ver na Na Figura 2.

 


Figura 2: Conexões do teclado matricial de 12 teclas.

 

Além da utilização para a digitação de números, o teclado matricial pode ser empregado com a finalidade de entrada de letras. Dessa maneira, cada número corresponderá a três ou quatro caracteres, que são programados através do software no Arduino.

Você pode imaginar a utilização do teclado matricial de maneira semelhante aos antigos telefones celulares, nos quais o mesmo teclado numérico servia para a digitação de mensagens de texto!

Além do modelo mostrado acima, existem vários outros tipos de teclados matriciais, mas todos possuem a mesma forma de utilização, de tal forma que o seu emprego com o Arduino se torna muito fácil.                     

    
Figura 3: Teclado matricial de 12 teclas.

 

  E como funciona?

 

Agora que já sabemos o básico sobre os teclados matriciais, vamos entender o seu funcionamento para construirmos o algoritmo de utilização com o Arduino.

Os teclados matriciais possuem as teclas que são conectadas internamente em forma de matriz – dessa forma, originando o seu nome. Você poderia imaginar, a este ponto, o motivo desta conexão matricial? A resposta é bem simples: Com as teclas arranjadas em forma de matriz, é possível de se utilizar menos pinos para a leitura das teclas!

Imagine que você possua um teclado com 64 teclas e cada seja ligado diretamente a um pino do microcontrolador. Gastaríamos 64 pinos, o que tornaria a implementação dessa interface, em uma placa Uno por exemplo, impossível. Para evitar este problema podemos conectar as teclas no formato de matriz 8×8 gastando agora apenas 16 pinos e utilizar uma técnica chamada multiplexação para realizar a leitura das teclas. 

 


Figura 4: Teclado matricial numérico de 12 botões.

 

Este teclado da Figura 4,  requer apenas 8 pinos do Arduino para realizar a tarefa de leitura de todos os botões, visto que as 16 teclas formam uma matriz 4×4. Desse modo, nós conseguimos uma economia de 50 % no número de pinos requeridos do Arduino.

A contrapartida desta economia de pinos é a necessidade de programação um pouco mais elaborada do software no Arduino. Porém, como eu vou lhe mostrar, este trabalho de programação pode ser realizado sem muitas dificuldades. Além disso, existem as bibliotecas de código (Sketches) para Arduino prontas, disponíveis para uso.

 

  É fácil conectar ao Arduino?

 

Agora que você já entendeu como é o teclado matricial, vamos, por fim, construir o algoritmo de utilização do mesmo.

Vamos partir do esquema elétrico do teclado matricial, que é apresentado na Figura 2.

Primeiramente, estabelecemos a numeração das linhas e colunas, que vão de 0 a 3, para esse modelo de teclado. Então, a partir da análise da Figura 4, verificamos que as teclas fecham contatos entre linhas e colunas específicas.

Por exemplo, a tecla correspondente ao número 1 fecha o circuito da linha 0 com a coluna 0. A tecla de número 5 fecha o contato entre a linha 1 e a coluna 1. Sugiro que você analise todas as teclas. A conclusão será de que cada tecla representa uma conexão única entre linha e coluna.

 

  Nem tudo são flores

 

Acontece, porém, que se mais de uma coluna estiver ativa, a leitura dos pinos das linhas não será capaz de identificar a tecla pressionada. Por exemplo, supondo que todas as colunas estejam ativas e a leitura da linha 0 estiver com nível lógico 1, não saberemos qual das teclas correspondentes aos números 1, 2 e 3 foi acionada.

A solução para este pequeno problema é simples: Acionamos uma coluna por vez e realizamos a leitura das linhas.

Infelizmente os problemas não acabam por aqui. Caso mais de uma tecla seja pressionada simultaneamente, pode ocorrer o efeito de tecla fantasma, isto é:  uma tecla pode ser lida como pressionada, quando ela não está. A Figura 5 te ajudará a entender o problema.


Figura 5: Efeito tecla fantasma

 

Uma solução para esse problema é adicionar um diodo em cada botão para evitar que estes caminhos indesejados sejam formados, como mostra a Figura 6.


Figura 6: Efeito tecla fantasma

 


  Colocando a teoria em pratica: Teclado matricial 4×4 no Arduino

 

Existem muitas maneiras de fazer a leitura de teclados matriciais. Vou lhe ensinar uma mais interessante e fácil de entender.

Vou postar o código, baseado na Figura 7  e depois lhe explicar os passos mais importantes.

 


Figura 7: Conexões do teclado matricial ao Arduino Uno 

 

 


Entendendo o código

 

Os pinos do Arduino correspondentes as colunas do teclado matricial devem ser configurados como saídas. Em contrapartida, os pinos das linhas devem ser configurados como entradas.

Colocamos nível lógico 1 no pino correspondente a coluna 0 e realizamos as leituras das linhas a fim de obter o estado das teclas. Por conseguinte, fica fácil de se verificar que com a coluna 0 acionada temos o seguinte:

  • A leitura da linha 0 corresponde a tecla de número 1
  • A leitura da linha 1 corresponde a tecla de número 4
  • A leitura da linha 2 corresponde a tecla de número 7
  • A leitura da linha 3 corresponde a tecla ‘*’

Assim, no exemplo foi mostrada a leitura da primeira coluna de teclas.

Da mesma forma, colocando nível lógico 1 na coluna 1, a leitura das linhas corresponderá a segunda coluna de teclas.

Assim, temos a estrutura do código que precisamos programar no Arduino para a leitura do teclado matricial.

 

O Programa para a leitura do teclado matricial no Arduino

Agora, utilizando os conceitos apresentados, vamos a parte da programação propriamente dita.

Primeiramente, são definidos os pinos para leitura do teclado. Como foi mostrado, precisamos definir 4 pinos de saída e 4 pinos como entrada para perfazer a leitura da matriz de até 16 teclas. Caso você queira utilizar um teclado de 12 teclas, poderá utilizar o mesmo código, diminuindo uma linha ou uma coluna. Ou seja, nesse caso você terá uma matriz 3×4 ou 4×3.

 

 

 

 

 

 

 


Conclusão

 

 

E aí, gostou? Opine. Assim poderemos melhorar.

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