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

Dúvidas? Deixe seu comentário

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.

Deixe uma pergunta

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.