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 |
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 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 |
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 |
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.
- #include <Keypad.h>
- const uint8_t nlinhas = 4;
- const uint8_t ncolunas = 4;
- char teclas[nlinhas][ncolunas] = {
- { '1', '2', '3', 'A' },
- { '4', '5', '6', 'B' },
- { '7', '8', '9', 'C' },
- { '*', '0', '#', 'D' }
- };
- uint8_t plinhas[nlinhas] = { 9, 8, 7, 6 };
- uint8_t pcolunas[ncolunas] = { 5, 4, 3, 2 };
- Keypad teclado = Keypad(makeKeymap(teclas), plinhas, pcolunas, nlinhas, ncolunas);
- void setup() {
- Serial.begin(9600);
- }
- void loop() {
- char tecla = teclado.getKey();
- if (tecla != NO_KEY) {
- Serial.print(tecla);
- }
- }
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 |
Vou deixar aqui o link da calculadora no TinkerCAD para você melhorá-la:
Clique aqui para acessar o link
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.