Você está na página 1de 6

Teclado matricial membrana 4x3 com Arduino - Arduino e Cia https://www.arduinoecia.com.br/2015/05/teclado-matricial-membr...

Pesquise neste blog :

18 maio 2015
Pesquisar

Teclado matricial membrana 4x3 com Arduino Custom Search

Vamos ver como utilizar em seu projeto uma forma simples e barata de entrada de dados com o teclado
matricial membrana 4x3 (4 linhas x 3 colunas). Além do uso mais comum, que é a digitação de senhas, este
teclado pode também ser usado para inserir coordenadas em uma máquina CNC, ou valores em uma máquina
automática de vendas, por exemplo.

Assine nossa newsletter: Seu email...


Quero assinar!

Internamente esse teclado possui uma sequência de chaves (nesse teclado especificamente são 12), dispostas
em forma de matriz. Cada chave quando acionada faz a ligação entre uma linha e uma coluna, e essa
informação é enviada ao microcontrolador, que por meio do programa interpreta qual tecla foi pressionada.

A imagem abaixo ilustra essa ligação linha x coluna no teclado 4x3 que estamos usando.

Na parte central da imagem temos, em azul, a representação das conexões das linhas, e no lado direito, em
vermelho, a representação das conexões das colunas.

No conector de 7 pinos do teclado, temos o sinal das linhas sendo enviado pelos pinos 1, 2, 3 e 4, e o sinal
das colunas enviado pelos pinos 5, 6 e 7.

Marcadores

arduino bluetooth display


esp8266 LCD
IR modulos
motoresraspberry pi sensores shield
temperatura videos wireless

Arquivo do blog

► 2018 (13)
► 2017 (24)
► 2016 (28)
▼ 2015 (35)
► Dezembro 2015 (2)
► Novembro 2015 (3)

Seguindo a imagem acima, vemos que se acionarmos, por exemplo, a tecla 5, será feita uma conexão entre a ► Outubro 2015 (2)
linha 2 (pino 2) e a coluna 2 (pino 6). Acionando a tecla 3, a conexão será entre as linhas 1 (pino 1) e a ► Setembro 2015 (2)
coluna 3 (pino 7). ► Agosto 2015 (3)
► Julho 2015 (2)
Ligação do teclado matricial ao Arduino
► Junho 2015 (3)

Para ligar esse teclado ao Arduino você vai precisar de 7 portas digitais: quatro para as linhas (portas 4, 5, 6 e ▼ Maio 2015 (3)
Como ligar o motor de passo 28BYJ-48

1 de 6 14/7/18 9:09 p. m.
Teclado matricial membrana 4x3 com Arduino - Arduino e Cia https://www.arduinoecia.com.br/2015/05/teclado-matricial-membr...

7), e três para as colunas (portas 8, 9 e 10) : no Raspberry ...


Teclado matricial membrana 4x3 com
Arduino
Display gráfico LCD 128x64 ST7920 em
modo 8 bits (...

► Abril 2015 (3)


► Março 2015 (5)
► Fevereiro 2015 (3)
► Janeiro 2015 (4)

► 2014 (55)
► 2013 (67)

Postagens populares

Como utilizar o módulo I2C


com display LCD

Controle remoto IR no
Arduino

Acionando portas do
Arduino usando Android e
bluetooth

Controlando um servo motor


com Arduino

Como estamos trabalhando com chaves, podemos usar no circuito três resistores nos pinos 8, 9 e 10, ou ativar Ligando uma lâmpada com
os resistores pull-up do Arduino via software. módulo relé

Programa teclado matricial 4x3


Nesse primeiro programa não vamos usar nenhuma biblioteca, definindo manualmente os pinos de saída
(linhas) e entrada (colunas), e a ativação dos resistores pull-up. Fale com o administrador do site
Politica de Privacidade
1 //Programa : Teclado matricial 4x3 Arduino
2 //Autor : Arduino e Cia
3
4 void setup()
5 { O conteúdo do blog Arduino e Cia, está
6 //Pinos ligados aos pinos 4, 5, 6 e 7 do teclado - Linhas licenciado com uma Licença Creative
7 pinMode(4, OUTPUT); Commons - Atribuição-CompartilhaIgual 4.0
8 pinMode(5, OUTPUT); Internacional.
9 pinMode(6, OUTPUT);
10 pinMode(7, OUTPUT);
11
12 //Pinos ligados aos pinos 8, 9, e 10 do teclado - Colunas
13 pinMode(8, INPUT);
14 //Ativacao resistor pull-up
15 digitalWrite(8, HIGH);
16 pinMode(9, INPUT);
17 digitalWrite(9, HIGH);
18 pinMode(10, INPUT);
19 digitalWrite(10, HIGH);
20
21 Serial.begin(9600);
22 Serial.println("Teclado 4x3 - Exemplo 1");
23 Serial.println("Aguardando acionamento das teclas...");
24 Serial.println();
25 }
26
27 void loop()
28 {
29 for (int porta = 4; porta<8; porta++)
30 {
31 //Alterna o estado dos pinos das linhas
32 digitalWrite(4, HIGH);
33 digitalWrite(5, HIGH);
34 digitalWrite(6, HIGH);
35 digitalWrite(7, HIGH);
36 digitalWrite(porta, LOW);
37 //Verifica se alguma tecla da coluna 1 foi pressionada
38 if (digitalRead(8) == LOW)
39 {
40 imprime_linha_coluna(porta-3, 1);
41 while(digitalRead(8) == LOW){}

2 de 6 14/7/18 9:09 p. m.
Teclado matricial membrana 4x3 com Arduino - Arduino e Cia https://www.arduinoecia.com.br/2015/05/teclado-matricial-membr...

42 }
43
44 //Verifica se alguma tecla da coluna 2 foi pressionada
45 if (digitalRead(9) == LOW)
46 {
47 imprime_linha_coluna(porta-3, 2);
48 while(digitalRead(9) == LOW){};
49 }
50
51 //Verifica se alguma tecla da coluna 3 foi pressionada
52 if (digitalRead(10) == LOW)
53 {
54 imprime_linha_coluna(porta-3, 3);
55 while(digitalRead(10) == LOW){}
56 }
57 }
58 delay(10);
59 }
60
61 void imprime_linha_coluna(int x, int y)
62 {
63 //Mostra informacoes no serial monitor
64 Serial.print("Linha : ");
65 Serial.print(x);
66 Serial.print(" x Coluna : ");
67 Serial.print(y);
68 delay(10);
69 Serial.println();
70 }

O programa faz uma varredura nas portas e mostra, no serial monitor, a informação sobre qual linha e coluna
foi acionada:

Temos também um segundo programa, utilizando a biblioteca Keypad (download). Com ela, o programa fica
bem mais enxuto, pois a biblioteca se encarrega de definir quais pinos são de entrada e saída, como é feita a
ativação dos resistores pull-up, etc.

No programa, devemos informar apenas quantas linhas e quantas colunas tem o nosso teclado (linhas 9 e 10
do programa), quais os pinos utilizados (linhas 22 e 24), e também alterar a matriz de caracteres, entre as
linhas 15 e 18.

1 //Programa : Teclado matricial 4x3 - Biblioteca Keypad


2 //Autor : Arduino e Cia
3 //Baseado no programa original de Alexander Brevig
4
5 //Carrega a biblioteca Keypad
6 #include <Keypad.h>
7
8 //Definicao da quantidade de linhas e colunas
9 const byte LINHAS = 4;
10 const byte COLUNAS = 3;
11
12 //Matriz de caracteres
13 char matriz_teclas[LINHAS][COLUNAS] =
14 {
15 {'1','2','3'},
16 {'4','5','6'},
17 {'7','8','9'},
18 {'*','0','#'}
19 };
20
21 //Definicao dos pinos das linhas
22 byte PinosLinhas[LINHAS] = {4, 5, 6, 7};
23 //Definicao dos pinos das colunas
24 byte PinosColunas[COLUNAS] = {8, 9, 10};
25
26 //Inicializa o teclado
27 Keypad meuteclado = Keypad( makeKeymap(matriz_teclas), PinosLinhas,
28 PinosColunas, LINHAS, COLUNAS);

3 de 6 14/7/18 9:09 p. m.
Teclado matricial membrana 4x3 com Arduino - Arduino e Cia https://www.arduinoecia.com.br/2015/05/teclado-matricial-membr...

29
30 void setup()
31 {
32 Serial.begin(9600);
33 Serial.println("Teclado 4x3 - Exemplo biblioteca Keypad");
34 Serial.println("Aguardando acionamento das teclas...");
35 Serial.println();
36 }
37
38 void loop()
39 {
40 //Verifica se alguma tecla foi pressionada
41 char tecla_pressionada = meuteclado.getKey();
42
43 //Mostra no serial monitor o caracter da matriz,
44 //referente a tecla que foi pressionada
45 if (tecla_pressionada)
46 {
47 Serial.print("Tecla pressionada : ");
48 Serial.println(tecla_pressionada);
49 }
50 }

Esse programa mostra no serial monitor qual tecla foi pressionada, de acordo com o que foi definido na matriz
de caracteres matriz_teclas:

Com pequenas alterações, podemos usar esses programas com outros tipos de teclado, como por exemplo
teclados matriciais 4x4.

Postado por Arduino e Cia às 07:31

Marcadores: arduino, keypad, matricial, teclado

14 comentários:
Anônimo 1 de setembro de 2015 22:05

Olá amigo !!! Vc teria alguma solução para um código em que vc pudesse digitar numeros nesse teclado tipo 123
e o arduino entendesse como cento e vinte e três e não como 1, 2 e 3 ? Grande abraço !!! Michel Ferrari.

Responder

Respostas

Arduino e Cia 2 de setembro de 2015 11:33

Boa tarde Michel,

Você pode simplesmente “somar” o valor lido de cada tecla, usando strings, por exemplo:

String1 = “1”;
String2 = “2”;
String3 = “3”;
String_agrupada = String1 + String2 + String3;
Serial.println(String_agrupada);

O resultado final exibido no Serial Monitor será 123, como você precisa. Claro, você precisa
programar quantos dígitos você vai precisar, porque nesse exemplo que eu mostrei, para obter o
número 1 você vai precisar de 3 digitos: 001. Outra opção é você utilizar um caractere para indicar o
final do número que você está digitando, como a cerquilha (#), por exemplo.

Abraço

speedylamborghini 9 de junho de 2016 09:36

Olá, pode dar um exemplo de codigo que utilize o (#) para finalizar um número digitado?

4 de 6 14/7/18 9:09 p. m.
Teclado matricial membrana 4x3 com Arduino - Arduino e Cia https://www.arduinoecia.com.br/2015/05/teclado-matricial-membr...

Responder

Unknown 15 de novembro de 2015 18:49

Oi gostaria de saber como faço para usar o teclado para ligar e desligar Leds..assim como o controle remoto

Responder

Unknown 19 de fevereiro de 2016 19:48

Olá!Boa noite!
Saberia me dizer se esse teclado contém internamente resistores para proteção das portas, ou se ele precisa de
um circuito pull up para efetuar a conexão com um Kit de Desenvolvimento, no meu caso estou usando o
Mclab.Teria o esquemático dele pra fornecer!
Desde já agradeço!
e-mail: rdias.vinicius@gmail.com

Responder

Respostas

Anônimo 12 de maio de 2017 20:33

é bom ter pois tentei no meu sem não deu

Responder

Unknown 1 de abril de 2016 15:28

Olá amigo baixei a biblioteca e copiei o segundo código mais enxuto mas quando mando compilar da o seguinte
erro:
sketch_apr01a:27: error: 'Keypad' does not name a type
sketch_apr01a.ino: In function 'void loop()':
sketch_apr01a:40: error: 'meuteclado' was not declared in this scope

sabe o que é isso?

Responder

Renato Viana 10 de novembro de 2016 16:47

ola amigos gostaria de saber como faço um codigo para chamar um outro codigo
ex; digitar 1 e faz um tipo de leitura no lcd dita 2 e faz outro tipo de leitura no lcd

Responder

Caio Lobo 14 de novembro de 2016 17:20

Como resolver quando aparece seguinte erro, ao mandar dar Upload do arquivo avrdude: stk500_getsync(): not
in sync: resp=0x00

Responder

Davi Dias 27 de fevereiro de 2017 08:49

Ola! Gostaria de saber se posso utilizar sua programação em um trabalho escolar e se utilizo o nome "Arduino e
cia" para identificar o autor?

Responder

Respostas

Arduino e Cia 16 de março de 2017 22:20

Oi Davi,

Pode referenciar o Arduino e Cia sim.. se precisar do nome do autor dos posts, é Adilson Thomsen, ok
? :)

Abraço!

Adilson

Responder

Anônimo 13 de março de 2017 01:51

olá, estou começando agora com arduino, e estou com dificuldade em alguns esquemas de ligações, tenho uma
placa Uno R3, uma lcd shild 16x2, um teclado membrana 4x, um speak e mais dois reles, o lcd e o teclado
consigo usa los apenas separadamente, tenho uma esquema de ligação que não funciona e preciso de ajuda,
gostaria de saber se alguem pode me dar uma força,desde de já agradeço dela atenção. Email é
e.f.a.t.rr@gmail.com

Responder

5 de 6 14/7/18 9:09 p. m.
Teclado matricial membrana 4x3 com Arduino - Arduino e Cia https://www.arduinoecia.com.br/2015/05/teclado-matricial-membr...

Samuel Caldas 6 de junho de 2017 01:29

Com essa biblioteca consigo ler mais de uma tecla simultaneamente? Sabe me dizer se são utilizados diodos
zener nessa matriz?

Responder

radlla Imperial 17 de setembro de 2017 12:35

ola,
gostaria de saber como faço no código para que seja lido um valor de entrada como senha e login e verificar se
esta correta com o valor cadastrado!
desde já agradeço.
ATT.

Responder

Digite seu comentário...

Comentar como: Conta do Google

Publicar Visualizar

Postagem mais recente Página inicial Postagem mais antiga

Assinar: Postar comentários (Atom)

Arduino e Cia © Copyright 2018

6 de 6 14/7/18 9:09 p. m.

Você também pode gostar