#61Iniciante

Uso do teclado matricial 3x4

4.5(24)
31 concluído
Uso do teclado matricial 3x4
O Arduino identifica na hora qual tecla você pressiona em um teclado de 12 teclas parecido com o de um telefone e a mostra na tela do computador. Os números, o asterisco e a cerquilha ficam em uma grade de linhas e colunas, que o Arduino verifica para encontrar a tecla pressionada. É o primeiro passo para projetos como uma fechadura com senha ou uma calculadora.

Vídeo

Esquema do circuito

Uso do teclado matricial 3x4 - Circuit

Código-fonte

C++ (Arduino IDE)
1// ─────────────────────────────────────────
2//   BlueGrays · bluegrays.com
3//   Uso do teclado matricial 3x4
4// ─────────────────────────────────────────
5// A tecla pressionada no teclado 3x4 é lida e mostrada no Monitor Serial
6// (9600 baud). A biblioteca Keypad varre as linhas e as colunas.
7//
8// Pinos:
9//   D8, D7, D6, D5 -> Linhas 1-4 do teclado
10//   D4, D3, D2     -> Colunas 1-3 do teclado
11
12#include <Keypad.h>
13
14const byte ROWS = 4;   // Número de linhas
15const byte COLS = 3;   // Número de colunas
16
17// Layout do teclado
18char keys[ROWS][COLS] = {
19  {'1', '2', '3'},
20  {'4', '5', '6'},
21  {'7', '8', '9'},
22  {'*', '0', '#'}
23};
24
25byte rowPins[ROWS] = {8, 7, 6, 5};   // Pinos das linhas
26byte colPins[COLS] = {4, 3, 2};      // Pinos das colunas
27
28Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
29
30void setup() {
31  Serial.begin(9600);
32  Serial.println("Keypad Initialized...");
33}
34
35void loop() {
36  // Pega a tecla pressionada; NO_KEY se não houver
37  char pressedKey = keypad.getKey();
38
39  if (pressedKey != NO_KEY) {
40    Serial.print("Pressed Key: ");
41    Serial.println(pressedKey);
42  }
43}
44

Perguntas frequentes

Qual é a diferença entre os teclados matriciais 3x4 e 4x4?

O teclado 3x4 tem 3 colunas + 4 linhas (12 teclas); o 4x4 tem 4+4 (16 teclas). O 3x4 basta para projetos compactos; se precisar de teclas extras, como as letras (A, B, C, D), prefira o 4x4.

Como identificar a ordem dos pinos?

Confira a identificação na parte de trás do teclado ou a folha de dados. Geralmente são 7 pinos, da esquerda para a direita: ROW1, ROW2, ROW3, ROW4, COL1, COL2, COL3. No código, defina primeiro os pinos das linhas e depois os das colunas.

getKey() bloqueia a execução?

Não, `keypad.getKey()` não bloqueia a execução: retorna o caractere da tecla pressionada, se houver, ou `NO_KEY` (=0) caso contrário. Você pode chamar a função continuamente dentro do loop sem interromper outras tarefas.