Como utilizar o teclado matricial 4×4 keypad com Arduino
O teclado matricial 4 x 4 keypad é um módulo eletrônico desenvolvido para facilitar a entradas de dados em projetos com microcontroladores, como o Arduino.
Este módulo possui 16 botões dispostos em 4 linhas e 4 colunas e um conector de 8 pinos para ligação, conforme pode ser observado na Figura 1.
No teclado matricial 4 x 4 keypad, cada botão em uma linha é conectado aos outros botões da mesma linha e coluna, formando uma matriz. Para identificar qual botão foi pressionado, o microcontrolador configura todas as colunas como nível ALTO e todas as linhas como nível BAIXO. Quando um botão é pressionado, o pino da coluna é colocado em nível BAIXO e o microcontrolador consegue identificar a coluna em que o botão pressionado está.
Em seguida, o microcontrolador configura todas as linhas como ALTO e as colunas como BAIXO e retorna a leitura para identificar qual pino da coluna retorna nível ALTO.
Na Figura 2 pode ser observada a combinação da linha 2 e a coluna 3, significando que o botão S7 foi pressionado.
O teclado matricial 4 x 4 keypad é ideal para conjuntos eletrônicos que necessitam de codificações ou para colocação de senhas em sistemas eletrônicos. Ele pode ser aplicado nos mais diversos projetos, apresentando excelente acabamento e perfurações para fixação nas extremidades.
Neste projeto, vamos realizar a leitura dos botões do teclado matricial 4 x 4 keypad e exibir o qual botão foi pressionado no monitor serial.
MATERIAIS NECESÁRIOS
- 1 x Placa UNO SMD R3 Atmega328 compatível com Arduino UNO;
- 1 x Cabo USB;
- 1 x Protoboard;
- 1 x Teclado matricial 4 x 4 keypad;
- Fios de jumper macho-fêmea.
ESQUEMÁTICO DE LIGAÇÃO DOS COMPONENTES
Conecte os componentes na protoboard como ilustra a Figura 3. Lembre-se que a placa UNO deve estar desconectada enquanto você monta o circuito.
Ao montar seu circuito na protoboard observe os seguintes pontos:
- Os pinos correspondentes as colunas do teclado matricial são representados por C1, C2, C3 e C4. Estes pinos devem ser conectados, respectivamente, aos pinos 8, 9, 10 e 11 da placa UNO;
- Os pinos correspondentes as linhas do teclado matricial são nomeadas de R1, R2, R3 e R4 e devem ser conectados às portas 3, 4, 5 e 6 da placa UNO.
ELABORANDO O CÓDIGO
Com o circuito montado, vamos a programação. A proposta deste projeto é realizar a leitura dos botões do teclado matricial 4 x 4 keypad e exibir qual botão foi pressionado no monitor serial. Para entender a lógica de programação acompanhe os seguintes passos:
1.Adicionar a biblioteca Keypad.h:
Para o desenvolvimento do nosso projeto, vamos incluir a biblioteca Keypad.h, desenvolvida para facilitar o uso de teclados do tipo matriz com o Arduino. Esta biblioteca encontra-se disponível no gerenciador de bibliotecas do Arduino IDE, que pode ser acessado por meio do caminho: Toolbar > Ferramentas > Gerenciar Bibliotecas…> Adicionar biblioteca ZIP, conforme ilustra a Figura 4.
Em seguida, no campo de pesquisa busque por keypad e instale a biblioteca clicando em “Instalar”, conforme Figura 5.
2. Incluir a biblioteca no código:
Iniciaremos incluindo a biblioteca através da instrução #include <Keypad.h>.
3. Declarar as variáveis:
Em nosso código, vamos declarar duas variáveis para armazenar o número de linhas e colunas do nosso teclado matricial, numLinhas e numColunas. Estas variáveis serão do tipo const byte, o que significa que elas são variáveis de leitura que podem armazenar um de 0 a 255.
Em seguida, criamos a matriz teclasMatriz com os caracteres a serem impressos quando um botão específico é pressionado no teclado. Você pode atribuir os caracteres que preferir.
Logo após, as portas 6, 5, 4 e 3 da placa UNO foram declaradas no array pinosLinhas[numLinhas] e as portas 8, 9, 10 e 11 no array pinosColunas[numColunas].
4. Criar objeto para inicializar o teclado matricial:
As bibliotecas do Arduino normalmente se apresentam em classes que possuem funções para adicionar, configurar ou executar alguma tarefa de algum dispositivo. Desse modo, para usar o teclado matricial 4 x 4 keypad precisamos inicializá-lo.
Nesse caso, criamos o objeto Keypad meuteclado = Keypad(makeKeymap(teclasMatriz), pinosLinhas, pinosColunas, numLinhas, numColunas); em que:
- makeKeymap: inicializa a matriz de botões do teclado para ser igual a matriz teclasMatriz com os caracteres definidos pelo programador;
- pinosLinhas e pinosColunas: são os pinos da placa UNO conectados as linhas e as colunas do teclado matricial;
- numLinhas e numColunas: são o número de linhas e colunas do teclado.
5. Inicializar a comunicação serial:
Dentro da função setup(), inicializamos a comunicação serial através da instrução: Serial.begin(9600);.
6. Verificar qual botão do teclado matricial foi pressionado e imprimir caractere correspondente no monitor serial:
Na função loop(), criamos a variável pressionado para retornar o botão pressionado, se houver. Para verificar se o botão foi pressionado, usamos a estrutura condicional if. Se o botão for pressionado, o caractere correspondente será impresso no monitor serial.
Ao final, o código do projeto proposto ficará da seguinte maneira:
/* = TECLADO MATRICIAL 4x4 KEYPAD COM ARDUINO = =============================================== == BLOG DA ROBOTICA - www.blogdarobotica.com == =============================================== Autor: Carol Correia Viana E-mail: contato@blogdarobotica.com Facebook: facebook.com/blogdarobotica Instagram:@blogdarobotica YouTube: youtube.com/user/blogdarobotica =============================================== == CASA DA ROBOTICA - www.casadarobotica.com == =============================================== Facebook: facebook.com/casadaroboticaoficial Instagram:@casadarobotica =============================================== */ #include <Keypad.h> //Biblioteca para uso de teclados matriciais const byte numLinhas = 4; //Quantidade de linhas do teclado const byte numColunas = 4; //Quantidade de colunas do teclado //Matriz de caracteres referente aos botões do teclado char teclasMatriz[numLinhas][numColunas] = { {'1', '2', '3', '4'}, {'5', '6', '7', '8'}, {'9', '0', '*', '+'}, {'#', '$', '%', '@'} }; byte pinosLinhas[numLinhas] = {6, 5, 4, 3}; //Pinos das linhas byte pinosColunas[numColunas] = {8, 9, 10, 11}; //Pinos das Colunas //Cria um objeto do tipo Keypad Keypad meuteclado = Keypad(makeKeymap(teclasMatriz), pinosLinhas, pinosColunas, numLinhas, numColunas); void setup() { Serial.begin(9600); //Inicia a comunicação serial Serial.println("Aperte um botão..."); //Imprime mensagem no monitor serial } void loop() { char pressionado = meuteclado.getKey(); ///Verifica se alguma tecla foi pressionada if (pressionado) { //Se alguma tecla foi pressionada Serial.print("Botão pressionado: "); //Imprime mensagem no monitor serial Serial.println(pressionado); //Imprime tecla pressionada } }
Espero que tenham gostado deste tutorial. Em caso de dúvidas, deixe seu comentário abaixo.
Carol Correia Viana
Bacharel em Engenharia Elétrica com ênfase em Eletrônica, mestra em Engenharia Industrial e especialista em Docência com ênfase em Educação Inclusiva. Atua no setor de Desenvolvimento de Produtos na Casa da Robótica. Editora chefe e articulista no Blog da Robótica. Fanática por livros, Star Wars e projetos Maker.