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