Electronic Dice!!!
ABOUT THIS PROJECT
I made a dice throwing prototype: if you press the button, a random number between 1 and 6 is generated and the corresponding number of LEDs are lit up. This was a holiday project with my kids :)
Dice throwing prototype using Arduino UNO, a button switch and 6 LEDs.
Full tutorial on my channel visit my channel for full tutorial!!!
Parts & Materials Required!!!
- Arduino uno
- 6x LED'S
- A breadbord or a prototyping board
- 6x 220 ohm Resistors
- 1x 1k ohm Resistors
- A push button
Circuit Diagram!!!
I have made a circuit diagram for the connections of Arduino,led,push button and resistors.
see the circuit diagram for the connections.
Connections!!!
Now connect led's negative terminal to the 220ohm resistors and positive terminal to the arduino's digital pins from 2 to 7.and connect the other led of the resistors to the Gnd(ground) pin.
For rest of the connections for push button see the circuit diagram!!
Additional Changes for the Led's!!!
I have added the BRIDGE like structure at the middle of the breadboard for the led's to rest infront of the wires and resistors JUST TO LOOK CLEAN.
U CAN ALSO SKIP THIS PART IF U DO NOT WANT TO DO THIS.
CODE!!
//Now hook up your pc with arduino and just download the below code and upload to your arduino.//Dynamic Innovator// set to 1 if we're debugging #define DEBUG 0 // 6 consecutive digital pins for the LEDs int first = 2; int second = 3; int third = 4; int fourth = 5; int fifth = 6; int sixth = 7; // pin for the button switch int button = 12; // value to check state of button switch int pressed = 0; void setup() { // set all LED pins to OUTPUT for (int i=first; i<=sixth; i++) { pinMode(i, OUTPUT); } // set buttin pin to INPUT pinMode(button, INPUT); // initialize random seed by noise from analog pin 0 (should be unconnected) randomSeed(analogRead(0)); // if we're debugging, connect to serial #ifdef DEBUG Serial.begin(9600); #endif } void buildUpTension() { // light LEDs from left to right and back to build up tension // while waiting for the dice to be thrown // left to right for (int i=first; i<=sixth; i++) { if (i!=first) { digitalWrite(i-1, LOW); } digitalWrite(i, HIGH); delay(100); } // right to left for (int i=sixth; i>=first; i--) { if (i!=sixth) { digitalWrite(i+1, LOW); } digitalWrite(i, HIGH); delay(100); } } void showNumber(int number) { digitalWrite(first, HIGH); if (number >= 2) { digitalWrite(second, HIGH); } if (number >= 3) { digitalWrite(third, HIGH); } if (number >= 4) { digitalWrite(fourth, HIGH); } if (number >= 5) { digitalWrite(fifth, HIGH); } if (number == 6) { digitalWrite(sixth, HIGH); } } int throwDice() { // get a random number in the range [1,6] int randNumber = random(1,7); #ifdef DEBUG Serial.println(randNumber); #endif return randNumber; } void setAllLEDs(int value) { for (int i=first; i<=sixth; i++) { digitalWrite(i, value); } } void loop() { // if button is pressed - throw the dice pressed = digitalRead(button); if (pressed == HIGH) { // remove previous number setAllLEDs(LOW); buildUpTension(); int thrownNumber = throwDice(); showNumber(thrownNumber); } }