Framework Arduino II: Aula 12 Teclado Matricial

 Imagem meramente ilustrativa

Introdução

    Imagine que você precisa desenvolver um projeto que por alguma razão precisa solicitar a senha do usuário. Como podemos entrar com a senha? A resposta é usar um teclado. Apesar de ser possível fazer seu próprio teclado com botões, existem teclados matriciais prontos que facilitam essa tarefa, sem consumir muitos pinos da placa. O mais comumente encontrado no mercado é o teclado matricial 4x4 de 16 teclas e hoje veremos um pouco sobre ele.

Teclado Matricial 4 x 4
Teclado Matricial 4 x 4


Conhecendo o Teclado Matricial 4 x 4

    Os teclados matriciais 4 x 4 ou keypads são teclados com teclas dispostas em quatro linhas por quatro colunas, totalizando 16 teclas. Internamente temos uma membrana e abaixo de cada tecla temos uma espécie de interruptor. 

Visão por trás de um Keypad. Fonte: Circuit Basics
Visão por trás de um Keypad. Fonte: Circuit Basics

Visão frontal
Visão frontal


    Tanto as linhas como as colunas estão interligadas entre si, formando uma matriz que resulta em 8 terminais. Ao pressionarmos uma tecla, o circuito se fecha, identificando a linha e a coluna da tecla pressionada de acordo com seus estados HIGH/LOW.

Mudança de estados de uma tecla pressionada. Fonte: Circuit Basics
Mudança de estados de uma tecla pressionada. Fonte: Circuit Basics


    Em termos de especificações, geralmente encontramos keypads com voltagens de trabalho entre 3 e 5 volts, com uma voltagem máxima de 24 VDC e amperagem máxima de 30 mA.

    Para sua utilização no Arduino temos a biblioteca Keypad de Mark Stanley e Alexander Brevig, disponibilizada para a comunidade e mantida por Chris  A.  em https://github.com/Chris--A/Keypad, podendo ser baixada diretamente na Arduino IDE, sendo que o próprio Wokwi instala para gente.

Montagem

    Abaixo temos o link de uma montagem básica mostrando o uso de um keypad para digitação de teclas no monitor serial. Algo bem simples. Basta conectar os terminais de linhas e colunas, conforme as imagens anteriores que mostramos.

Montagem básica para uso do keypad no Wokwi
Montagem básica para uso do keypad no Wokwi


    Link: https://wokwi.com/projects/414174054118956033

Sketch

    Basicamente utilizei o Sketch de exemplo da referência do Wokwi, traduzindo os termos para ficar mais compreensível para o estudante. Na linha 1 temos a inclusão da biblioteca e logo abaixo a declaração das constantes para o número de linhas e colunas do teclado.

    Repare que estou utilizando o alias uint8_t  que representa um inteiro sem sinal de oito bits. Eu normalmente gosto de simplificar o código para facilitar a compreensão do estudante colocando expressões mais simples como define ou declarando variáveis, mas essa tentativa resultou em muitos erros na hora de instanciar o objeto, por isso preservei o código original.

    Depois temos a declaração de uma matriz 4 x 4 do tipo char chamada teclas, com os caracteres que serão representados pelos botões. Em seguida a declaração de duas matrizes para armazenar os pinos das linhas e os pinos das colunas.

    Na linha 15 temos o instanciamento do objeto teclado com base na classe Keypad da biblioteca, utilizando a função Keypad() que recebe como parâmetros o mapa das teclas, as matrizes das pinagens e os números de linhas e colunas do teclado. A função setup() apenas inicializa o monitor serial.

    Na função loop declaramos uma variável chamada tecla para capturar a tecla pressionada através do método getKey(). Depois testamos se uma tecla foi pressionada, isto é, se tecla é diferente de NO_KEY e imprimimos no monitor serial a tecla.

  1. #include <Keypad.h>

  2. const uint8_t nlinhas = 4;
  3. const uint8_t ncolunas = 4;
  4. char teclas[nlinhas][ncolunas] = {
  5.   { '1', '2', '3', 'A' },
  6.   { '4', '5', '6', 'B' },
  7.   { '7', '8', '9', 'C' },
  8.   { '*', '0', '#', 'D' }
  9. };

  10. uint8_t plinhas[nlinhas] = { 9, 8, 7, 6 }; 
  11. uint8_t pcolunas[ncolunas] = { 5, 4, 3, 2 }; 

  12. Keypad teclado = Keypad(makeKeymap(teclas), plinhas, pcolunas, nlinhas, ncolunas);

  13. void setup() {
  14.   Serial.begin(9600);
  15. }

  16. void loop() {
  17.   char tecla = teclado.getKey();

  18.   if (tecla != NO_KEY) {
  19.     Serial.print(tecla);
  20.   }
  21. }

    No primeiro semestre da faculdade apresentei um projeto de calculadora científica utilizando um keypad e um display LCD em um Arduino Uno. O código ficou meio "rebuscado" porque era nosso primeiro contato com C++ e na época não sabíamos quase nada, mas acho que serve como exemplo do que você pode fazer e o que NÃO deve fazer...

Exemplo de calculadora feita com Keypad e Display LCD
Exemplo de calculadora feita com Keypad e Display LCD


    Vou deixar aqui o link da calculadora no TinkerCAD para você melhorá-la:

    Clique aqui para acessar o link

Próxima Aula                                                                                                                        Aula Anterior

Referências

BLOG DA ROBÓTICA. Como utilizar o teclado matricial 4×4 keypad com Arduino. Disponível em <https://www.blogdarobotica.com/2022/06/30/como-utilizar-o-teclado-matricial-4x4-keypad-com-arduino/> Acesso em 11 nov 2024.

BLOG ELETROGRATE. Arduino – Keypad 4×4 e Display Digital. Disponível em <https://blog.eletrogate.com/arduino-keypad-4x4-e-display-digital/> Acesso em 11 nov 2024.

CIRCUIT BASICS. How to Set Up a Keypad on an Arduino. Disponível em <https://www.circuitbasics.com/how-to-set-up-a-keypad-on-an-arduino/> Acesso em 11 nov 2024.

MAKER HERO. Como usar o Teclado Matricial 4×4 com Arduino. Disponível em <https://www.makerhero.com/blog/teclado-matricial-4x4-arduino/> Acesso em 11 nov 2024.

STA ELETRÔNICA. Como utilizar o teclado matricial 4 x 4 com o Arduino Uno. Disponível em <https://www.sta-eletronica.com.br/artigos/arduinos/como-utilizar-o-teclado-matricial-4x4-com-o-arduino-uno> Acesso em 11 nov 2024.

ROBO CORE. Usando o Teclado Matricial com Arduino. Disponível em <https://www.robocore.net/tutoriais/usando-teclado-matricial-com-arduino> Acesso em 11 nov 2024.

WOKWI. Referência do wokwi-membrane-keypad. Disponível em <https://docs.wokwi.com/pt-BR/parts/wokwi-membrane-keypad/> Acesso em 11 nov 2024.