An electronic dice using ATmega8

Travel to outer space sounds very exciting but now we are here in our space ship and we have about 10 square meters for 5 people. It will take another week until we reach the first space station. I took my mp3 player with me and after so many days of travel I have heard every song at least a dozen times.
James was much more clever: He bought an electronic dice from because normal dice don’t work in the absence of gravity….
Let’s play ;-).
An electronic dice

_________________ _________________ ________________

The electronic dice

A dice is essentially just a special display for numbers from 1 to 6.
Why is a real dice a random number generator? If your hand would have perfect precision mechanics and you could control speed and position exactly then a real dice would probably be deterministic. In other words the one tossing the dice is the one introducing the randomness.
If you look at the code for our electronic dice then you will see that it is just a counter. It counts up while you press a button. Why is this a prefect dice? It’s a dice because microcontrollers do operations in μs and humans are unable to control pushbuttons and time with the precision of μ-seconds. Even if you hit the pushbutton just for a moment the microcontroller’s counter will loop around 56 times, or 80 times, or 102 times,…. It’s impossible to control it precisely. It’s random.

The E-dice as a nice AVR project

The E-dice is a simple but useful AVR starter project.

An electronic dice schematic

The only polar components in this circuit are the atmega8 and the LEDs. The atmega8 has mark on the side where pin 1 is. The LEDs are always oriented such then minus pin is connected to the wire that leads finally to one of the atmega8 pins.
Which pin on the LED is minus and which is plus? By convention the longer wire is always the plus wire and the shorter wire the minus wire as shown in the picture on the right.
Let’s take a look at the code. This is the main part of the code.
The complete source code is available for download at the end of this article:

 unsigned char i=0;
        DDRB &= ~(1<<PINB0); // input line
        PORTB|= (1<<PINB0); // internal pullup resistor on

For more detail: An electronic dice using ATmega8

About The Author

Ibrar Ayyub

I am an experienced technical writer holding a Master's degree in computer science from BZU Multan, Pakistan University. With a background spanning various industries, particularly in home automation and engineering, I have honed my skills in crafting clear and concise content. Proficient in leveraging infographics and diagrams, I strive to simplify complex concepts for readers. My strength lies in thorough research and presenting information in a structured and logical format.

Follow Us:

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top