ESTUDANDO O MUNDO ARDUINO:E ANTECIPANDO O FUTURO: | ||
TECLADO 4X4 | ||
acessar com www.ebanataw.com.br/arduino/expteclado.htm |
O Teclado Matricial 4×4 é um componente do Mundo Arduino utilizado para entrada de dados. Possui 16 teclas dispostas em 4 linhas x 4 colunas, e um conector de 8 pinos para ligação com o Arduino. Internamente são 16 teclas push-buttons tipo membrana dispostos na configuração abaixo em um formato keypad. Conforme a tecla é pressionada, é feita a conexão entre a linha e a coluna correspondentes. Se pressionarmos a tecla A no teclado matricial, será feita a conexão entre os pinos 1 (linha 1) e 8 (coluna 4), se pressionarmos a tecla 7, será feita uma conexão entre os pinos 3 (linha 3) e 5 (coluna 1), e assim por diante:
CONEXÕES: Vamos utilizar 8 portas do Arduino para ligação ao teclado matricial, sendo 4 para as linhas, e 4 para as colunas. Os pinos das linhas deverão ser configurados como OUTPUT (Saída), e os pinos das colunas como INPUT (Entrada). Nos pinos referente às colunas, vamos utilizar 4 resistores pull-down, mantendo-as em nível baixo quando não houver acionamento das teclas:
PROGRAMA: No programa, primeiro definimos todos os pinos das linhas como saída (pinos 3, 4, 5 e 6), e os pinos das colunas como entrada (pinos 8,9,10 e 11). Um loop se encarrega de colocar cada pino de saída (linhas) em estado alto (HIGH), e verificar se alguma tecla foi pressionada, por meio de um comando IF para cada coluna. Caso isso aconteça, é gerada uma saída no serial monitor com a informação correspondente à qual tecla foi pressionada no teclado matricial:
//Programa : Teste teclado matricial 4x4
//Autor : FILIPEFLOP
void
setup()
{
//Pinos
ligados aos pinos 1, 2, 3 e 4 do teclado - Linhas
pinMode(3,
OUTPUT);
pinMode(4,
OUTPUT);
pinMode(5,
OUTPUT);
pinMode(6,
OUTPUT);
//Pinos
ligados aos pinos 5, 6, 7 e 8 do teclado - Colunas
pinMode(8,
INPUT);
pinMode(9,
INPUT);
pinMode(10,
INPUT);
pinMode(11,
INPUT);
Serial.begin(9600);
Serial.println("Aguardando
acionamento das teclas...");
Serial.println();
}
void
loop()
{
for
(int
ti
=
3;
ti<7;
ti++)
{
//Alterna
o estado dos pinos das linhas
digitalWrite(3,
LOW);
digitalWrite(4,
LOW);
digitalWrite(5,
LOW);
digitalWrite(6,
LOW);
digitalWrite(ti,
HIGH);
//Verifica
se alguma tecla da coluna 1 foi pressionada
if
(digitalRead(8)
==
HIGH)
{
imprime_linha_coluna(ti-2,
1);
while(digitalRead(8)
==
HIGH){}
}
//Verifica
se alguma tecla da coluna 2 foi pressionada
if
(digitalRead(9)
==
HIGH)
{
imprime_linha_coluna(ti-2,
2);
while(digitalRead(9)
==
HIGH){};
}
//Verifica
se alguma tecla da coluna 3 foi pressionada
if
(digitalRead(10)
==
HIGH)
{
imprime_linha_coluna(ti-2,
3);
while(digitalRead(10)
==
HIGH){}
}
//Verifica
se alguma tecla da coluna 4 foi pressionada
if
(digitalRead(11)
==
HIGH)
{
imprime_linha_coluna(ti-2,
4);
while(digitalRead(11)
==
HIGH){}
}
}
delay(10);
}
void
imprime_linha_coluna(int
x,
int
y)
{
Serial.print("Linha
: ");
Serial.print(x);
Serial.print("
x Coluna : ");
Serial.print(y);
delay(10);
Serial.println();
}
É um programa muito simples e a única coisa que ele faz é mostrar a linha e coluna da tecla acionada. Veja um exemplo:
Para mostrar a letra pressinada, você deve montar uma tabela interna relacionando LinhaXColuna com a letra ou algarismo. |
|
NOTA: Este site é mantido pela equipe do engenheiro Roberto Massaru Watanabe e se destina principalmente para adolecentes e estudantes. Pelo caráter pedagógico do site, seu conteúdo pode ser livremente copiado, impresso e distribuido. Só não pode piratear, isto é, copiar e depois divulgar como se fosse de sua autoria.
ET-18\RMW\arduino\expteclado.htm em 24/03/2018, atualizado em 02/01/2020 .