fbpx
ArduinoNovidadeSimulação

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.

A imagem mostra uma foto de maneira real de um teclado matricial 4x4 keypad
Figura 1 – Teclado matricial 4 x 4 Keypad.

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.

A imagem mostra de maneira ilustrativa o diagrama de acionamento de um botao no teclado matricial 4x4
Figura 2 – Diagrama de acionamento do botão S7 do teclado matricial 4 x 4

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


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.

A imagem mostra de maneira ilustrativa um circuito para exibir um botao pressionado no monitor serial
Figura 3 – Circuito para Projeto exibir botão pressionado no monitor serial

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.

A imagem mostra como abrir a pagina de bibliotecas do arduino IDE
Figura 4 – Caminho para o gerenciador de bibliotecas do Arduino IDE.

Em seguida, no campo de pesquisa busque por keypad e instale a biblioteca clicando em “Instalar”, conforme Figura 5.

A imagem mostra como baixar a biblioteca Keypad no arduino ide
Figura 5 – Gerenciador de bibliotecas.

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.

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.