ESTUDANDO O MUNDO ARDUINO:E ANTECIPANDO O FUTURO:

TECLADO 4X4

acessar com  www.ebanataw.com.br/arduino/expteclado.htm

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 .