O teclado numérico 4x4 é um teclado matricial com 16 botões dispostos em formato 4 linhas x 4 colunas.
Muito utilizado em sistemas embarcados para entrada de dados (senhas, comandos, menus, etc.).
Cada botão corresponde a um ponto de interseção entre uma linha e uma coluna.
A disposição em matriz reduz o número de pinos necessários para leitura.
Permite organizar números, letras e caracteres especiais.
Números de 0 a 9, caracteres especiais * e #, além da teclas adicionais A, B, C e D.
Possui interface simples, baseada em contatos elétricos.
Cada tecla conecta uma linha a uma coluna quando pressionada.
Para identificar a tecla, o Arduino ativa as linhas uma a uma, verificando em qual coluna ocorre a conexão, descobrindo assim qual botão foi pressionado.
O conector possui 8 pinos, correspondentes às 4 linhas (R1–R4) e 4 colunas (C1–C4).
A ordem pode variar de acordo com o fabricante.
Neste projeto você criará um circuito que faz o uso de um teclado numérico matriz 4x4 com o Arduino.
Para a criação deste circuito serão necessários os seguintes componentes:
Para montar o circuito, visualize na imagem a seguir como conectar os componentes entre a placa Arduino e a breadboard.
Uma vez criado o circuito, use o código fonte a seguir no Arduino IDE para fazer o upload dele na placa Arduino e assim ver o resultado do circuito em funcionamento.
/**
* Código do curso Magos do Arduino para utilizar um teclado numérico matriz de 4x4 com o Arduino.
*
* Imprima no monitor serial as leituras dos valores de cada tecla pressionada
* no teclado numérico matriz de 4x4 com o Arduino.
*
* Utiliza a biblioteca Adafruit_Keypad, que pode ser instalada através do gerenciador de bibliotecas do Arduino IDE.
*
* (c) Copyright KazaleIT
* @kazaleitoficial no YouTube
*/
#include <Adafruit_Keypad.h>
// define os pinos de conexão do teclado com o Arduino
#define R1 2
#define R2 3
#define R3 4
#define R4 5
#define C1 8
#define C2 9
#define C3 10
#define C4 11
// dimensões do teclado
const byte LINHAS = 4;
const byte COLUNAS = 4;
// caracteres do teclado
char caracteres[LINHAS][COLUNAS] = {
{ '1', '2', '3', 'A' },
{ '4', '5', '6', 'B' },
{ '7', '8', '9', 'C' },
{ '*', '0', '#', 'D' }
};
// array com informações dos pinos das linhas e colunas
byte pinosLinhas[LINHAS] = { R1, R2, R3, R4 };
byte pinosColunas[COLUNAS] = { C1, C2, C3, C4 };
// criar uma instância da classe de controle do teclado
Adafruit_Keypad teclado4x4 = Adafruit_Keypad(makeKeymap(caracteres), pinosLinhas, pinosColunas, LINHAS, COLUNAS);
void setup() {
// inicializa conexão serial
Serial.begin(9600);
// inicializa a classe de controle do teclado
teclado4x4.begin();
}
void loop() {
// faz a leitura e processamento caso botão pressionado ou liberado
teclado4x4.tick();
while (teclado4x4.available()) {
keypadEvent e = teclado4x4.read();
Serial.print((char)e.bit.KEY);
if (e.bit.EVENT == KEY_JUST_PRESSED) {
Serial.println(" pressionado");
} else if (e.bit.EVENT == KEY_JUST_RELEASED) {
Serial.println(" liberado");
}
}
delay(10);
}