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 (iflooprandom).


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

cpp
Copy
Download
#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 Arduino
const 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  
}

Explicação do Código

1. Biblioteca LedControl

  • 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.

✅ Lógica de Programação

  • 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.


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

Postagens mais visitadas