sábado, 30 de janeiro de 2021

Aula 07 - Teclado Matricial 4x4 para Arduino

Figura 01 - Teclado Matricial 4x4

    O Teclado Matricial 4x4 foi desenvolvido para facilitar a entrada de dados em projetos microcontrolados. Este teclado possui 16 teclas, onde 10 delas são números, 4 são letras e 2 são caracteres especiais. Com ele podemos criar uma infinidade de projetos, tais como criar controles de acesso, teclados musicais, entre outros.
    Nesse tutorial iremos montar um simples projeto, assim aprendendo o funcionamento básico do teclado, de imprimir as teclas pressionadas no monitor serial. 
    O teclado possui 16 teclas, que estão dispostas em 4 linhas por 4 colunas, e ele possui 8 pinos para ligação. Embaixo de cada tecla há um interruptor de membrana. Cada interruptor em uma linha é conectado aos outros interruptores da mesma linha por um traço condutor sob o bloco, e da mesma forma são conectadas às colunas, onde todos os botões da coluna também estão conectados. Ou seja, todos os botões do teclado estão conectados a uma linha e a uma coluna, por isso que é chamado de teclado matricial. A imagem abaixo ilustra o circuito do teclado.
Figura 02 - Funcionamento do
Teclado Matricial 4x4

    
Para identificar qual botão foi pressionado, a placa Arduino executa quatro passos. O primeiro é configurar todas as colunas da matriz como entradas em nível lógico alto (resistor de pull-up interno ativado), e todas as linhas como saídas em nível lógico baixo. Deste modo, caso o botão "5" seja pressionado, a coluna "2" passará para o nível lógico baixo, completando o segundo passo. Já no terceiro passo, o Arduino identifica a linha que foi pressionada invertendo o nível lógico anterior, ou seja, configurando as colunas para nível lógico baixo, e mantendo as linhas em nível lógico alto. Desta forma, a linha "2", em nosso exemplo, passará para o nível lógico baixo, e o microcontrolador identificará que o botão pressionado está na linha "2" e coluna "2", completando, portanto, o quarto e último passo, como na imagem abaixo.
    Com a posição das teclas, é possível configurar o teclado para exibir os caracteres que você desejar, ou até mesmo acionar outras portas do Arduino,  já que , como comentamos no início, o teclado nada mais é do que uma série de push-buttons dispostos em forma de matriz.
Figura 03 - Placa Arduino e 
Teclado Matricial 4x4

    
Para começar a trabalhar com o teclado matricial, vamos criar um projeto simples de exibição das teclas pressionadas na tela do computador. Com a biblioteca adicionada à Arduino IDE, copie o código abaixo e carregue-o para sua placa Arduino. Para exibir no monitor serial as teclas presionadas, monte o circuito da figura 03.
    Logo no início, após a inclusão da biblioteca "Keypad", declaramos em variáveis a quantidade de linhas e de colunas do teclado utilizado, no nosso caso, 4 linhas e 4 colunas.
    Também criamos a matriz TECLAS_MATRIZ, responsável por armazenar as informações do nosso teclado, e onde indicamos para nosso microcontrolador, através de uma matriz, qual caractere é impresso quando um determinado botão do teclado é pressionado.
    Abaixo definimos em vetores quais pinos são responsáveis pelas linhas e pelas colunas (respectivamente PINOS_LINHAS e PINOS_COLUNAS). Posteriormente inserimos o comando Keypad teclado_personalizado, para iniciar o teclado e associar nossa matriz de acordo com o pinos estabelecidos para colunas e linhas.
    No setup do programa, inserimos o comando Serial.begin(9600), assim iniciando a porta serial em 9600 bits por segundo.
    Por fim, no looping do programa, e com o comando leitura_teclas = teclado_personalizado.getKey(), atribuímos à variável leitura_teclas o caractere do botão que foi pressionado. Com essa variável, verificamos se alguma tecla foi realmente pressionada através da condição if (leitura_teclas). Caso alguma tecla tenha sido realmente pressionada, o valor da variável será diferente de "0" e a condição será verdadeira, resultando na impressão da tecla pressionada no monitor serial.
    
#include <Keypad.h> // Biblioteca do codigo

const byte LINHAS = 4; // Linhas do teclado
const byte COLUNAS = 4; // Colunas do teclado

const char TECLAS_MATRIZ[LINHAS][COLUNAS] = { // Matriz de caracteres (mapeamento do teclado)
  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', 'D'}
};

const byte PINOS_LINHAS[LINHAS] = {9, 8, 7, 6}; // Pinos de conexao com as linhas do teclado
const byte PINOS_COLUNAS[COLUNAS] = {5, 4, 3, 2}; // Pinos de conexao com as colunas do teclado

Keypad teclado_personalizado = Keypad(makeKeymap(TECLAS_MATRIZ), PINOS_LINHAS, PINOS_COLUNAS, LINHAS, COLUNAS); // Inicia teclado

void setup() {
  Serial.begin(9600); // Inicia porta serial
}

void loop() {

  char leitura_teclas = teclado_personalizado.getKey(); // Atribui a variavel a leitura do teclado

  if (leitura_teclas) { // Se alguma tecla foi pressionada
    Serial.println(leitura_teclas); // Imprime a tecla pressionada na porta serial
  }
Ao abrir o Monitor Serial em 9600 bps, pressione o botão desejado e o mesmo será impresso na tela.

O manual com diagrama elétrico da placa do Teclado Matricial 4x4 está disponível em: Teclado Matricial 4x4 .

© Direitos de autor. 2020: Gomes; Sinésio Raimundo. Última atualização: 02/04/2021

Nenhum comentário:

Postar um comentário