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

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.
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
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;
}
}
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.