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.