MP2: Fireball

Brian Brubach, Elizabeth McNany
Source Code


The Fireball is a replacement for dice and other randomizers in board games. It was designed with two main goals in mind. First, in addition to simulating dice, it should be able to generate random numbers from other distributions not easily realizable by dice or other traditional components. Second, it should be more fun to interact with than a smart phone app. In other words, we wanted to maintain the fun of dice while expanding the possibilities for game designers and players.

Addressing the first goal was fairly simple. Incorporating the Pro Micro microcontroller allows the Fireball to generate a random number based on any distribution which can be coded in Arduino. A simple example of a distribution which is not easily realizable by dice is a uniform random number between 1 and 7 since there is no 7-sided regular polyhedron. A more complicated example would be tweaking the variance of how many times a particular number is rolled. This is useful for games such as The Settlers of Catan, in which the numbers rolled correspond to events or actions rather than numerical values.


To accomplish the second goal, we took inspiration from children's toys such as those pictured above. The device is shaped like a ball with a weighted bottom (similar to the fox wobble toy above left) so that it always settles with the LED display facing up. This allows the user to smack, roll, or twirl it. While the accelerometer senses that the ball is in motion, a series of random numbers, seeded by accelerometer output, are displayed. The final result is whichever number is displayed when the ball settles. Uncertainty of when the ball will stop adds to the suspense.

It is called the Fireball due to its intensity.

Materials and Parts

Total Cost
Pro Micro
7-Segment Serial Display
Triple-Axis Accelerometer + Magnetometer Board
Detecting rolls
Clear plastic ball
9V battery
Portable power
9V snap connector

Mini modular breadboard

Wires, solder, resistor, tape,
copper tape, conductive paint
Misc. connections

Weighting (optional)

Total Cost:
[ labeled image here ]




  • We originally planned to use conductive paint on more surfaces of the ball, but discovered that it flaked off the plastic. Hence, the sturdier copper tape for the inside connections.
  • The USB connector on the pro micro is a very snug fit.. after uploading a new version of code, the force of unplugging the cable broke a connector off :(
  • Lots of soldering work on the various boards for this project, something neither of us were very experienced with before.
  • The ball initially took way to long to settle due to its smooth surface and spherical shape. We had to modify the shape to fix this.
  • We couldn't find a good tool in the lab for making tiny wire holes in brittle plastic. Eventually, we heated wire with a soldering iron and forced the wire through the plastic (pictured below). No soldering irons touched the plastic or were otherwise harmed in this process.
external image jPP6JgX.jpg

Future Work Ideas

  • More buttons for switching between distributions, neater presentation on that.
  • More optimal shape with a flatter bottom.
  • More robust connection to power the device. The conductive paint and copper tape provide weak and somewhat unreliable connections.
  • Design a game that can only be played using the Fireball or program a self-contained game into it.

Thoughts about Project

  • We would have liked to incorporate more low-tech components into the project, but most options (e.g. a low-tech display) seemed unwieldy or impractical for the intended use of the ball. We also considered a mat of sorts that the ball would roll on and perhaps getting info from sensors there, but scrapped the idea early on to have it be more self-contained.
  • Handling the somewhat unpredictable physical behavior of the more low tech elements was interesting.
  • Designing a high-low tech project that attempted to marry existing low tech (dice) and high tech (smartphone app) devices was a fun challenge.

Links to Inspirations, Code Libraries, and Code Samples