Arduino: Electronic Dice (using Random Numbers)

24,093

14

15

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

Step 6: Time for the Code

I put many comments in the .pde file that is going to be uploaded to the arduino so I'm not going to explain anything here. If you have questions write it in a comment or pm me and I will make sure to answer as best as I can. If there are any problems with the code please tell me but I have checked it many times and it seems to be working fine. And yes I know that the code is extremely inefficient when it comes to space but it was written this way for less experienced users.



Be the First to Share

    Recommendations

    • Make it Glow Contest

      Make it Glow Contest
    • First Time Author Contest

      First Time Author Contest
    • PCB Challenge

      PCB Challenge

    15 Discussions

    0
    redryno1221
    redryno1221

    11 years ago on Introduction

    Please comment if you have questions or suggestions on how to make this instructable better... thanx

    0
    sharepksn
    sharepksn

    Tip 5 months 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

    0
    TheSheMullet
    TheSheMullet

    1 year ago

    Nice little starter project. I had to add the pinMode for middleLeft amd middleRight.

    IMG_20200118_204255.jpg
    0
    TaranA3
    TaranA3

    Question 2 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

    0
    Noldoaran
    Noldoaran

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

    0
    anand-patel
    anand-patel

    9 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

    0
    redryno1221
    redryno1221

    Reply 9 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

    0
    dpoulson
    dpoulson

    9 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! :)

    0
    dpoulson
    dpoulson

    Reply 9 years ago on Introduction

    Heh, just realised how old this instructable was! It has just been posted on electronics-lab.com blog! :)

    0
    Paul Smith
    Paul Smith

    11 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?

    0
    redryno1221
    redryno1221

    Reply 11 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 ;)

    0
    Paul Smith
    Paul Smith

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

    0
    redryno1221
    redryno1221

    Reply 11 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)...

    0
    Tanners
    Tanners

    11 years ago on Introduction

    it looked like some of the risistors were backwards or does it matter?

    0
    redryno1221
    redryno1221

    Reply 11 years ago on Introduction

    for resistors it doesn't matter which way they are...
    in other words resistors are not effected by polarity.. :)