Dado Eletrônico com Arduino, Matriz LED 8x8 e Push Button
Dado Eletrônico com Arduino, Matriz LED 8x8 e Push Button
Introdução
Neste projeto, vamos criar um dado eletrônico utilizando um Arduino, uma matriz de LED 8x8, um push button e uma protoboard. O objetivo é simular o funcionamento de um dado tradicional, onde o jogador pressiona um botão e um número aleatório (de 1 a 6) é exibido na matriz de LED.
Este projeto é ideal para iniciantes em eletrônica e programação, pois trabalha conceitos como:
Leitura de entradas digitais (botão).
Geração de números aleatórios.
Controle de matrizes de LED.
Estruturas de programação básicas (
if
,loop
,random
).
Materiais Necessários
✅ Arduino Uno (ou similar)
✅ Matriz de LED 8x8 (com driver MAX7219 ou conectada diretamente)
✅ Push button
✅ Protoboard
✅ Jumpers
Montagem do Circuito
Programação do Dado Eletrônico
Código Completo
#include "LedControlMS.h"
/* Criando o objeto lc ***** Definindo os pinos de conexão do módulo MAX7219 ***** pino 2 conectado no DIN pino 3 conectado no CLK pino 4 conectado no CS N_MTX = 1 - Número de dispositivos (Máximo de 8 módulos MAX7219) */ const byte N_MTX = 1;LedControl lc=LedControl(2,3,4, N_MTX);
String digits = "123456";
// define pinos do Arduinoconst byte btn = 11;
void setup() { for (int i=0; i< N_MTX; i++){ lc.shutdown(i,false); lc.setIntensity(i,8); /* define o brilho dos leds - médio */ lc.clearDisplay(i); /* limpa o display */ }
// define botões como entrada e pull up interno do Arduino pinMode(btn, INPUT_PULLUP);
// randomSeed() basicamente "embaralha" a função random(). randomSeed(analogRead(0));
// coloca o primeiro número show(random(0, 6));} void loop() { if(!digitalRead(btn)) { // botão acionado while(digitalRead(btn) == 0) {}; // loop vazio - aguarda soltar o botão lc.clearAll(); delay(200); rodada(); }}
void rodada(){ byte result = 0; // inicializa a variável "result" com 0 byte rodada = random(15, 35); // gera comprimento da rodada, quantos números passarão for (byte i = 0; i < rodada; i++) // loop de 0 até comprimento da rodada { result = random(0, 6); // gera número de 0 a 5, devido a string começar em 0 e finalizar em 5 show(result); // mostra resultado delay(50 + i * 10); // espera para passar cada número (varia velocidade) }}
void show(byte number) { char dig = digits[number]; // displayChar(adress, char) lc.displayChar(0, lc.getCharArrayPosition(dig)); // exibe o caractere na posição }
#include "LedControlMS.h"/* Criando o objeto lc***** Definindo os pinos de conexão do módulo MAX7219 *****pino 2 conectado no DINpino 3 conectado no CLKpino 4 conectado no CSN_MTX = 1 - Número de dispositivos (Máximo de 8 módulos MAX7219)*/const byte N_MTX = 1;LedControl lc=LedControl(2,3,4, N_MTX);String digits = "123456";// define pinos do Arduinoconst byte btn = 11;void setup() {for (int i=0; i< N_MTX; i++){lc.shutdown(i,false);lc.setIntensity(i,8); /* define o brilho dos leds - médio */lc.clearDisplay(i); /* limpa o display */}// define botões como entrada e pull up interno do ArduinopinMode(btn, INPUT_PULLUP);// randomSeed() basicamente "embaralha" a função random().randomSeed(analogRead(0));// coloca o primeiro númeroshow(random(0, 6));}void loop() {if(!digitalRead(btn)) { // botão acionadowhile(digitalRead(btn) == 0) {}; // loop vazio - aguarda soltar o botãolc.clearAll();delay(200);rodada();}}void rodada(){byte result = 0; // inicializa a variável "result" com 0byte rodada = random(15, 35); // gera comprimento da rodada, quantos números passarãofor (byte i = 0; i < rodada; i++) // loop de 0 até comprimento da rodada{result = random(0, 6); // gera número de 0 a 5, devido a string começar em 0 e finalizar em 5show(result); // mostra resultadodelay(50 + i * 10); // espera para passar cada número (varia velocidade)}}void show(byte number) {char dig = digits[number];// displayChar(adress, char)lc.displayChar(0, lc.getCharArrayPosition(dig)); // exibe o caractere na posição}
Explicação do Código
1. Biblioteca LedControl
Controla a matriz LED via MAX7219, simplificando o envio de dados.
Controla a matriz LED via MAX7219, simplificando o envio de dados.
Importância do Projeto
✅ Aprendizado de Eletrônica Básica
Introduz leitura de botões e controle de LEDs.
Ensina a trabalhar com matrizes de LED.
Introduz leitura de botões e controle de LEDs.
Ensina a trabalhar com matrizes de LED.
✅ Lógica de Programação
Uso de números aleatórios (random()
).
Manipulação de arrays para armazenar padrões de LEDs.
Uso de números aleatórios (random()
).
Manipulação de arrays para armazenar padrões de LEDs.
✅ Aplicações Práticas
Jogos eletrônicos (dados, tabuleiros).
Sistemas de sorteio (rifas, sorteios em eventos).
Ferramenta educacional para ensinar probabilidade.
Jogos eletrônicos (dados, tabuleiros).
Sistemas de sorteio (rifas, sorteios em eventos).
Ferramenta educacional para ensinar probabilidade.
Conclusão
Este projeto é uma ótima maneira de aprender Arduino de forma prática e divertida. Com poucos componentes, é possível criar um dado eletrônico funcional, que pode ser expandido para incluir sons, animações ou até mesmo um jogo completo.
Que tal montar o seu e começar a jogar? 🎲🚀
Se quiser melhorar o projeto, você pode adicionar:
🔹 Um buzzer para som de rolagem
🔹 Efeitos de animação
🔹 Contador de pontos
Comentários
Postar um comentário