Introduction: Arduino: Electronic Dice (using Random Numbers)
This instructable will show you how to make an electronic dice with minimal experience using 7 LEDs, resistors, jumper wires, and of course the arduino (or arduino clone). I wrote this instructable for anyone to easily follow along and learn more about the arduino. Questions are welcome and will be answered as soon as possible. For less experienced users the code for the arduino is in "longhand" and several comments are included for better understanding of the code being uploaded into the arduino.
Step 1: Parts List
Arduino or a clone ( I'm using a protoshield but a breadboard will work the same way)
11 Jumper Wires (or stripped wires in order to make connections on a breadboard)
7 Resistors (I used 330ohms) (ORANGE)(ORANGE)(BROWN)(GOLD)
7 LEDs ( I used green)
1 tactile switch or motions sensor (I used a motion sensor)
Step 2: Jumper Setup
In this step you will need to plug in 7 of the 11 wires. Jumper will be placed in digital plugs 2, 4, 5, 6, 7, 8, and 10; the other sides will be placed in the breadboard as shown below.
Step 3: Add Resistors
Now we will connect the resistors to the same column on the breadboard as the jumper wires. But the resistor will need to connect top gap to the bottom gap of the breadboard (check the picture it's really simple).
Step 4: Light It Up
Time to light up the breadboard with some Leds. There are 7 leds in all but their leads (+/-) need to be put into different ports in the breadboard. The way to do this on a breadboard is to have 3 Leds with their positive leads going into holes that are side by side, 1 led that needs to have the "positive" leads long enough to skip one hole in the breadboard, and 3 that skip 2 holes in between leads. Check the pictures, it's not nearly as hard as it seems.
After bending the Leds to the correct sizes place the Leds on the breadboard as it is shown below. NOTICE: the cathode(-) ends are going into columns without resistors and the anodes (+) are going into columns with resistors
Step 5: Add a Switch
Now it's time to add a switch. It's important that the switch is a momentary switch (when you push it the curcuit is closed and when you release the curcuit is open or vice versa). I use a motion sensor but the tactile switch will work in the same way.
For the tactile switch your going to need to connect it as it is below. NOTICE: two of the pins are on the same side that is the correct way to use a tact switch.
For the motion sensor I used I jumped it to the top and use a piece of wire to connect it to the bottom.
No matter what switch you use you will need to connect it to the 3volt port with a 270ohm resistor (red)(purple)(brown)(gold)
First Picture: shows the installation of the motion sensor and a jumper cable
Second Picture: shows the installation of a green jumper wire from the motion sensor to Digital Pin 12
Third Picture: shows the installation of a resistor from the 3v port to the same side of the motion sensor that the green jumper wire is connected to
Fourth Picture: shows the installation of a white jumper wire to the other side of the motion sensor and to ground
Fifth, Sixth, and Seventh Pictures: show the installation of a ground wire to the cathode column of the Leds
Eight Picture: shows how to use a tactile switch if you don't want to use or don't have a motion sensor
16 Comments
14 years ago on Introduction
Please comment if you have questions or suggestions on how to make this instructable better... thanx
1 year ago on Step 6
The coding video won't play. It says it's private.
Tip 3 years ago on Step 6
Hi, thanks for the wonderful article for the beginners. if you are interested, we are working on online playground for Arduino, where you can test the LED blinking code here and also tinker it online without leaving the browser. If it is helpful, please feel free to mention it for sure. it also has many other online playground modules.
https://wokwi.com/playground/blink
3 years ago
Nice little starter project. I had to add the pinMode for middleLeft amd middleRight.
Question 5 years ago
I am making a digital dice using a lcd shield, how would i code to make the dice roll when i press the select button
11 years ago on Introduction
You forgot to set the pinMode to OUTPUT for middleLeft and middleRight.
Great instructable! I love how neat your wiring is. I made LED dice before reading this instructable, but mine looks like a mess.
12 years ago on Introduction
Hi, i made a arduino dice following https://www.instructables.com/id/Digital-Dice-an-Arduino-project/ - would you know how to make the lights flash randomly before settling on a number (i.e to simulate the 'rolling' of a die)? Cheers
Reply 12 years ago on Introduction
I would just like to emphasize that the code I wrote is not optimized to work efficiently but written for beginners to begin to see how it works. I have updated the code to flash randomly 6 times before picking the final number. Let me know if there are any problems as I have not actually tested it. :)
http://www.mediafire.com/?bidb4kb3usxe7f3
12 years ago on Introduction
Nice. An electronic die is exactly what I did as my first from scratch arduino project. :)
On the random front, as stated, seeding from an analog port seems to work well.
Also, in the interest of reducing the code, and a possible further exercise for anyone doing this instructable, you can reduce the number of i/o pins down to 4 for a standard d6.
Nice instructable. You beat me to doing the same one! :)
Reply 12 years ago on Introduction
Heh, just realised how old this instructable was! It has just been posted on electronics-lab.com blog! :)
13 years ago on Introduction
How do you overcome the fact the the random function in the arduino always uses the same sequence of random numbers, thus making it predictable?
Reply 13 years ago on Introduction
Even if it used the same sequence (which i do not believe it does, i think it works based on the clock of the atmega328 but i haven't read up on it) it is so long that if you memorize the sequence you either have an incredible memory or you use it too much ;)
Reply 13 years ago on Introduction
Well I was trying to make a random number generator to simulate dice. I used the serial.print command to log the sequence random(1,6) and it was always the same! Someone suggested using randomSeed(analogRead(0)) so Ill have to give it a try...
Reply 13 years ago on Introduction
huh i didn't know that... tell me what you find... I thought the random was much like a computers random number that is based off of the clock (ms)...
13 years ago on Introduction
it looked like some of the risistors were backwards or does it matter?
Reply 13 years ago on Introduction
for resistors it doesn't matter which way they are...
in other words resistors are not effected by polarity.. :)