Manual

do

Maker

.

com

Teclado matricial 4x4 com Arduino

Teclado matricial 4x4 com Arduino

Enquanto estou empenhado em um projeto bacana, incluindo uma biblioteca bem elaborada, resolvi escrever um artigo breve para dar um "alô", já que há vários dias que não escrevo nada, então, vamos de teclado matricial 4x4 com Arduino.

Hoje vou deixar o código desse keypad ou, teclado matricial 4x4 com Arduino.

Como utilizar o teclado matricial 4x4 com Arduino?

Um teclado matricial relaciona o eixo X com o eixo Y e emite um sinal dessa combinação. Na verdade, um circuito é fechado e  isso corresponde a uma posição na matriz, não há inteligência alguma nessa matriz, por isso todos os cuidados ficam por conta do programador.

Onde comprar o teclado matricial 4x4?

Recomendo fortemente a aquisição desse teclado com a Fulltronic, que vende pelo Mercado Livre. O preço é muito bom e o produto também. É resistente a água e tem adesivo no flat cable e atrás da matriz, por isso fica fácil grudar em quase qualquer superfície.

Por que um artigo sobre o teclado matricial 4x4 com Arduino?

Bem, acho que vou repetir o artigo com ESP8266, utilizando um PCF8574 para expandir os GPIO. Se não conhece ainda o PCF8574, recomendo esse outro artigo sobre sua utilização com ESP8266. Mas se você procurar alí na loop no topo direito da página, vai encontrar artigos de sua utilização inclusive com Raspberry Pi, já escrevi vários artigos sobre ele. Mas enfim, o motivo que me levou a escrever esse artigo é na verdade o próximo projeto, que será simples, mas bem bacana; um cofre com  Arduino. Acredito que no terceiro artigo eu já publique o projeto especial que estou trabalhando nele agora.

Wiring

A imagem não é minha, encontrei em uma pesquisa no google images, que me levou a uma imagem no Mercado Livre. Eu fiz o wiring baseado nessa imagem, com resistores de 330Ohms invés de 220Ohms, como mostrado na imagem. Não que eu queira ser do contra, mas realmente não tenho resistores de 200Ohms à mão. De qualquer modo, com 330Ohms funcionou perfeitamente.

teclado_matricial-wiring.webp

Código

Passei uns 20 minutos descobrindo as posições e imaginando um código razoavelmente bom. Vou colocar o código comentado abaixo.

/*Já que se trata de uma matriz bi-dimensional, 
porque não fazer uma que corresponda às teclas?*/
int keys[4][4] = { {1,2,3,'A'},
                   {4,5,6,'B'},
                   {7,8,9,'C'},
                   {'*',0,'#','D'}
};

void setup()
{
  //configuração dos pinos de entrada e saída
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  
  pinMode(8, INPUT);
  pinMode(9, INPUT);
  pinMode(10, INPUT);
  pinMode(11, INPUT);
  //serial apenas para exibir as teclas pressionadas
  Serial.begin(9600);
}

void loop()
{
    for (int i=1;i<7;i++){
        digitalWrite(3, LOW);
        digitalWrite(4, LOW);
        digitalWrite(5, LOW);
        digitalWrite(6, LOW);
        digitalWrite(i+2, HIGH);

        if (digitalRead(8)){
            pressedKey(i, 1);
           //esse while garante que não haverá repetição do print
           // enquanto a tecla não for liberada e pressionada novamente
           while(digitalRead(8));
        } 
        else if (digitalRead(9)){
            pressedKey(i, 2);
            while(digitalRead(9));
        } 
        else if (digitalRead(10)){
           pressedKey(i, 3);
           while(digitalRead(10));
        }
        else if (digitalRead(11)){
          pressedKey(i, 4);
          while(digitalRead(11));
        }
   }
   delay(10);
}

void pressedKey(int x, int y){
    //pega o valor da posição na matriz
    int value  = keys[x-1][y-1];
    //se o valor for maior que 9, é um char
    if (value > 9){
        Serial.println((char)value);
        return;
    }
    Serial.println(value);
    
}

Como você pode ver, é simples fazer a interação com a matriz e utilizar uma matriz bi-dimensional para estabelecer os valores para cada tecla reduz bastante o código, porque assim você não precisa escrever um monte de condicionais para selecionar o valor a exibir.

Inscreva-se no nosso canal Manual do Maker no YouTube.

Também estamos no Instagram.

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.