- PROJETO DADO ELETRÔNICO -

Descubra o projeto exclusivo do Dado Eletrônico, uma ferramenta inovadora que oferece não apenas maior conhecimento em programação e eletrônica, mas também momentos de pura diversão. Ideal para ser integrado em diversos jogos de tabuleiro ou como complemento em atividades educacionais, este kit permite a criação de um dado que, ao passar a mão em sua parte frontal, utiliza um fotoresistor para gerar números aleatórios de 1 a 6, assim como um dado físico convencional.
Para tornar a experiência ainda mais dinâmica, ele conta com um buzzer que indica o número sorteado através de beeps. Um kit diferenciado e muito interessante para entusiastas de programação com Arduino, proporcionando uma experiência interativa e educativa incomparável.

Kit dado eletrônico acrilico
Kit dado eletrônico acrilico

O Kit Dado Eletrônico

O kit acompanha um Arduino UNO SMD, uma protoboard de 400 pontos e uma base de acrílico utilizada para fixação dos mesmos, garantindo uma montagem estável e organizada. Além disso, inclui um suporte de acrílico com encaixes para os LEDs, LCD e buzzer. Acompanha também resistores e jumpers para ligações entre os componentes.

Com todos esses componentes, o kit oferece tudo o que você precisa para montar e testar este projeto de maneira prática e eficiente.

Logo Arduino

Neste projeto, acionaremos o dado através de um componente chamado LDR. Ele fará a função de uma chave tátil, com a vantagem de não ser necessário nenhum contato físico com o projeto, apenas passando levemente a mão na frente do mesmo.
Para que isso ocorra, é necessário entender como fazer a calibração de um valor médio do sinal para seu acionamento. Clique ao lado para entender como calibrar.

Kit Acrílico

O kit completo em acrílico inclui uma base para a placa Arduino e uma protoboard, além de acessórios como parafusos, espaçadores e pés de silicone. Veja nesta página mais detalhes sobre a base e como montá-la corretamente. O kit também conta com todas as outras peças em acrílico e os acessórios necessários para a organização dos componentes, incluindo bases com pinos fixadores, parafusos e porcas.

ONDE COMPRAR
Kit dado eletrônico acrilico

Sistema de fixação e encaixe prático

Sistema de fixação entre acrílicos e base da protoboard super práticos, veja a sequência das 8 ilustrações abaixo:

Componentes Necessários

Logo abaixo temos a lista de componentes utilizado neste exemplo, e sua ligação com o Arduino.

  • 1 x Arduino Uno SMD
  • 1 x Cabo USB para comunicação
  • 1 x Protoboard 400 pontos
  • 1 x Buzzer Ativo
  • 7 x LEDs Vermelhos
  • 1 x LDR
  • 1 x Resistore 10K
  • 7 x Resistores 220Ω
  • 3 x Jumpers macho/macho
  • 18 x Jumpers macho/fêmea
Esquema dado eletrônico

Código exemplo

Segue um exemplo de código para este projeto, com comentários para facilitar a compreensão. Sinta-se à vontade para fazer quaisquer alterações que considerar necessárias. Ao posicionar o cursor sobre o código, botões aparecerão à direita da janela, permitindo que você copie o código facilmente.

IDE Arduino

const int buzzer = 9; // Define o pino do buzzer como 9
const int ledPinos[] = {2, 3, 4, 5, 6, 7, 8}; // Define os pinos dos LEDs
const int ldr = A0; // Define o pino do sensor LDR como A0
int Valorldr = 0; // Variável para armazenar o valor lido do LDR
int numero_dado = 0; // Variável para armazenar o número do dado
int resultado = 0; // Variável para armazenar o resultado final
boolean lendo = true; // Variável para controlar a leitura do LDR

void setup() {
  randomSeed(analogRead(0)); // Inicializa o gerador de números aleatórios
  pinMode(ldr, INPUT); // Define o pino do LDR como entrada
  pinMode(buzzer, OUTPUT); // Define o pino do buzzer como saída
  Serial.begin(9600); // Inicializa a comunicação serial a 9600 bps

  // Define os pinos dos LEDs como saída
  for (int i = 0; i < 7; i++) {
    pinMode(ledPinos[i], OUTPUT);
  }
}

void loop() {
  // Verifica se está lendo o valor do LDR
  if (lendo == true) {
    Valorldr = analogRead(ldr); // Lê o valor do LDR
    
    // Verifica se o valor lido é menor ou igual a 450
    if (Valorldr <= 450) {
      // Pisca os LEDs aleatoriamente 40 vezes
      for (int i = 0; i < 40; i++) {
        piscarAleatorio();
        delay(100);
        resultado = random(1, 7); // Gera um número aleatório entre 1 e 6
        exibirResultado(resultado); // Exibe o resultado nos LEDs
      }
      
      lendo = false; // Define lendo como falso para parar a leitura do LDR
      Serial.println("False"); // Imprime "False" na serial

      // Emite um som no buzzer para cada número do resultado
      for (int i = 0; i < resultado; i++) {
        tone(buzzer, 1000); // Emite um som de 1000 Hz
        delay(200); // Aguarda 200 ms
        noTone(buzzer); // Para o som
        delay(200); // Aguarda 200 ms
      }

      delay(4000); // Aguarda 4 segundos
      exibirResultado(0); // Apaga os LEDs
    } 
    Serial.println(Valorldr); // Imprime o valor do LDR na serial
  } else {
    Serial.println("True"); // Imprime "True" na serial
    lendo = true; // Redefine lendo como true para reiniciar a leitura do LDR
  }
}

// Função para piscar os LEDs aleatoriamente
void piscarAleatorio() {
  for (int i = 0; i < 7; i++) {
    digitalWrite(ledPinos[i], random(2) == 0 ? HIGH : LOW);
  }
}

// Função para exibir o resultado nos LEDs
void exibirResultado(int numero) {
  // Apaga todos os LEDs
  for (int i = 0; i < 7; i++) {
    digitalWrite(ledPinos[i], LOW);
  }

  // Acende os LEDs de acordo com o número gerado
  switch (numero) {
    case 0:
      Serial.println("0");
      break;
    case 1:
      digitalWrite(ledPinos[3], HIGH); // Acende o LED do meio
      Serial.println("1");
      break;
    case 2:
      digitalWrite(ledPinos[0], HIGH); // Acende o LED superior direito
      digitalWrite(ledPinos[6], HIGH); // Acende o LED inferior esquerdo
      Serial.println("2");
      break;
    case 3:
      digitalWrite(ledPinos[2], HIGH); // Acende o LED inferior direito
      digitalWrite(ledPinos[3], HIGH); // Acende o LED do meio
      digitalWrite(ledPinos[4], HIGH); // Acende o LED superior esquerdo
      Serial.println("3");
      break;
    case 4:
      digitalWrite(ledPinos[0], HIGH); // Acende o LED superior direito
      digitalWrite(ledPinos[2], HIGH); // Acende o LED inferior direito
      digitalWrite(ledPinos[4], HIGH); // Acende o LED superior esquerdo
      digitalWrite(ledPinos[6], HIGH); // Acende o LED inferior esquerdo
      Serial.println("4");
      break;
    case 5:
      digitalWrite(ledPinos[0], HIGH); // Acende o LED superior direito
      digitalWrite(ledPinos[2], HIGH); // Acende o LED inferior direito
      digitalWrite(ledPinos[3], HIGH); // Acende o LED do meio
      digitalWrite(ledPinos[4], HIGH); // Acende o LED superior esquerdo
      digitalWrite(ledPinos[6], HIGH); // Acende o LED inferior esquerdo
      Serial.println("5");
      break;
    case 6:
      digitalWrite(ledPinos[0], HIGH); // Acende o LED superior direito
      digitalWrite(ledPinos[1], HIGH); // Acende o LED central direito
      digitalWrite(ledPinos[2], HIGH); // Acende o LED inferior direito
      digitalWrite(ledPinos[4], HIGH); // Acende o LED superior esquerdo
      digitalWrite(ledPinos[5], HIGH); // Acende o LED central esquerdo
      digitalWrite(ledPinos[6], HIGH); // Acende o LED inferior esquerdo
      Serial.println("6");
      break;
  }
}


IDE Arduino
Logo Arduino


Se você já possui os componentes eletrônicos e deseja adquirir apenas as peças avulsas em acrílico conforme suas necessidades, clique no botão abaixo.

ONDE COMPRAR