It simulates a marble maze by sensing the box's orientation with 2 tilt switches.
Stop the press: there's a new and more intuitive version that doesn't require the spin knob (See video).
I keep documenting the original version below for historical purposes, but don't watch this - watch that.
Bonus game: The Marble Disorder box is compatible with Ariadne. (the only difference is the tilt switches).
Build once, play twice :)
Step 1: Hardware and software
It is advised to build the new version (much more fun to play).
- An Arduino
- A Hitachi HD44780 compatible LCD display (I used 16x2, but 20x4 should work too)
- 2 tilt switches
- A pushbutton
- 3 10K Ohm resistors (pull-up for the tilt switches and the buttons)
- 2 10k Ohm potentimeters (one for spin control and [an optional] one for LCD contrast)
- Optional piezo speaker
The code is here.
The maze generation algorithm is the same as Ariadne's (See explanation there).
If you connect the piezo speaker, you can mute it by setting MUTESOUND to 1.
Actually - this is the default :)
Why have the speaker and mute it? Glad you asked:
Like I've mentioned, you can also run Ariadne's code on this box.
Ariadne only beeps when you hit a wall (i.e. you've made a mistake). This can be avoided.
Marble Disorder beeps whenever there's a spin (i.e. when both tilt-switches allow the marble to move to 2 different cells, and the spin potentiometer determines which one).
This can't be avoided - so you end up with a pretty noisy game. It does help play the game - but I'm not sure it's worth the hassle of all those beeps.
Another option is to put a switch on the piezo speaker (something my Electronic Brick shield doesn't allow).