Crie um jogo de multiplicação com Arduino, teclado matricial 4×3 e display 16×2
Nesse post iremos criar um projeto simples para ver se você ou a quem você mostrar esse projeto é bom de matemática, iremos fazer um joguinho de perguntas de multiplicação com o arduino, o teclado de membrana 4×3 e o display 16×2, onde o arduino controlará tudo, o teclado receberá a resposta e o display exibirá a multiplicação e dirá se você acertou ou não.
E o melhor de tudo o nosso projeto não será composto de continhas pré-definidas, todos os números serão gerados aleatoriamente, o que torna esse projeto ainda mais dinâmico e divertido. Então agora que já sabemos o que temos que fazer vamos lá conhecer os módulos que iremos utilizar!
Display 16×2
Antes de tudo aposto que você está se perguntando por que esse “16×2”?
~Esse nome é dado devido ao fato de ele possuir 16 colunas e duas linhas, ou seja, é possível reproduzir 16 caracteres e em duas linhas, totalizando 32 caracteres, bastante coisa né?
O display 16×2 é uma forma simples e barata para exibir textos, números e etc, já imaginou ligar 32 displays de 7 segmentos ao mesmo tempo e controlar todos eles? daria bastante trabalho né? O nosso display reproduz a mesma quantidade de caracteres que os 32 displays de 7 seguimentos, porém com tamanhos bem menores e com um controle bem mais simples e intuitivo.
Além disso o display 16×2 tem várias combinações de cores diferentes, basta você escolher o melhor para o seu projeto

Figura 01: Displays 16×2 e seus diversos modelos
Fonte: Aliexpress
No nosso projeto utilizaremos o Display Lcd 16×2 Backlight Azul, que tem as seguintes especificações:
Especificações:
– Controlador: HD44780;
– Cor backlight: Azul;
– Cor escrita: Branca;
– Dimensão Total: 80mm X 36mm X 12mm;
– Dimensão Área visível: 64.5mm X 14mm;
– Dimensão Caracter: 3mm X 5.02mm;
– Dimensão Ponto: 0.52mm X 0.54mm.
Teclado de Membrana 4×3
A imagem abaixo ilustra essa ligação linha x coluna no teclado 4×3 que estamos usando.
Figura 02: Teclado de Membrana 4×3 12 Teclas representação interna
Fonte: Arduino e cia
Os conectores enumerados de 1 a 4 são os que tem contato com as linhas e os pinos de 5 a 7 com as colunas.
Materiais Utilizados:
- 1 x Arduino Uno;
- 1 x Protoboard;
- 1 x LCD 16×2(Azul);
- 1 x Teclado de Membrana 4×3 12 Teclas;
- 1 x Potenciômetro 10k;
- Jumpers.
Esses itens, e mais uma outros para implementar seu projeto – você acha AQUI na nossa loja :D.
Montagem:
O circuito é bem simples, olha só como ele ficou :

Figura 02: Circuito eletrônico de algum roboô
Fonte: Autocore robotica
O Potenciômetro está presente no circuito para poder ajusta o brilho dos segmentos do display, ele é bastante importante para poder deixar as informações do display o mais legíveis o possível.
Código comentado:
Sei que você está ansioso para programar né, mas antes disso é fundamental instalar as bibliotecas do teclado e do display, elas estão disponíveis logo abaixo:
Agora com ela já instalada seu código vai pegar perfeitamente ;D
// Programa: Jogo de multiplicação com Arduino, teclado matricial 4x3 e display 16x2
// Autor: Saulo Alexandre - Autocore Robótica
// incluindo as bibliotecas
#include <Keypad.h> //biblioteca do teclado matricial
#include <LiquidCrystal.h> // biblioteca do display
// definições do teclado
const byte numLinhas= 4; //numero de linhas do teclado
const byte numColunas= 3; //numero de colunas do teclado
//criando um array com os valores referentes a cada teclada
char mapaTeclado[numLinhas][numColunas]=
{
{'1', '2', '3'},
{'4', '5', '6'},
{'7', '8', '9'},
{'*', '0', '#'}
};
byte pinosLinhas[numLinhas] = {10,9,8,7}; //definindo os pinos das linhas
byte pinosColunas[numColunas]= {13,12,11}; //definindo os pinos das colunas
// enviando as informações dos pinos e dos valores do teclado para a biblioteca dele
Keypad TecladoMatricial= Keypad(makeKeymap(mapaTeclado), pinosLinhas, pinosColunas, numLinhas, numColunas);
//definindo os pinos do display LCD
LiquidCrystal lcd(A0, A1, A2, A3, A4, A5);
void setup() {
lcd.begin(16, 2); //Incia o display LCD
randomSeed(analogRead(7));//Inicia o gerador de números aleatórios
lcd.setCursor(0, 0);
lcd.print(" Autocore");
lcd.setCursor(0, 1);
lcd.print(" Robotica");
delay(2000);
}
void loop() {
lcd.clear();//apagando tudo do display
lcd.setCursor(0, 0);
//Escolhe dois números e os exibe no LCD
int num1 = random(2, 11);
int num2 = random(2, 11);
int resultado = num1 * num2;
lcd.print(String(num1) + " x " + String(num2) + " = ");
// Esperando a resposta do usuário e digitar o resultado
int resposta = valorLido().toInt(); //recebe um valor no char e converte para o tipo String
lcd.setCursor(0, 1);
// Se o valor digitado for igual ao resultado da mutiplicação
if (resultado == resposta){
lcd.print("Voce acertou!");
}
else {
// se não for igual ao resultado da multiplicação
lcd.print("Errou... R: " + String(resultado));
}
resposta = valorLido().toInt(); //Apenas esperando pressionar qualquer tecla para continuar
}
//Entra aqui quando é pressionado o "#"
//Recebe os valores do teclado e os imprime na tela e retorna para a função anterior o valor recebido
String valorLido(){
String valorDigitado = "";
char teclaPressionada = TecladoMatricial.getKey();
while (teclaPressionada != '#'){
teclaPressionada = TecladoMatricial.getKey();
if ((teclaPressionada != NO_KEY) && (teclaPressionada != '#')) {
valorDigitado.concat(teclaPressionada);// concatena os valores que recebe com os já recebidos anteriormente
lcd.print(teclaPressionada);
}
}
return(valorDigitado); // retorna o valor digitado para a função anterior
}
Conclusão:
Gravamos um vídeo para demonstrar o funcionamento do nosso joguinho :
Gostaram do projeto? O display de LCD 16×2, particularmente, é um dos componentes mais legais e amplos que existem e junto com o teclado eles podem fazer diversos projetos, esse jogo de multiplicação foi só um deles.
O que acharam? Legal? Divertido? Desafiador?
Deixe seu comentário ai embaixo, seu curtir no nosso Facebook – e não perca o nosso próximo post.

