We wanted to build something that combines the fun of classic board games with the possibilities of electronic video games. We have therefore combined a low resolution pixel display, a rotating die and 4 two-button remotes, all wrapped up in a portable box of around 50x50cm.
The maincircuit
Inside the box the main component is a Teensy 3.5 microcontroller which gives enough CPU speed and RAM for complex graphics animations and handling of the stepper motor which rotates the hexagonal die. A 12V 8A power supply gives enough power for both stepper motor, and LED display. The 12V need to be downconverted to 5V for the Teensy as well as the display and remote LEDs.
The pixels of the display are made from WS2812B LED strips arranged in a 19x19 matrix. Every LED can be individually adressed by transmitting 8 bit R, G and B data using SPI. The LEDs are sitting behind a wooden matrix to prevent crosslight between pixels, covered with paper for blurring and a plexiglass sheet.
The die is made from two 3d printed halves and holds an LED to illuminate the dots for the die score. A Nema17 stepper motor rotates the die. An RPR220 photoreflective sensor sits underneath a metal disk with a piece of insulating tape. The sensor registers the change in reflection between metal and insulating tape to calibrate the stepper motor zero position. From this zero position and the number of steps the stepper motor had to take during a die throw the result is determined. The stepper motor has to be carefully accelerated and decelerated in order to not miss steps during the process.
The following libraries are used (huge credit to the authors):
FastLED (https://github.com/FastLED/FastLED)AccelStepper (https://www.airspayce.com/mikem/arduino/AccelStepper/)
The rest is programmed in C++ for the Arduino IDE.
GamesThe classic Mensch Ärgere Dich Nicht (a.k.a. Parcheesi or Ludo)
Gurke which is similar to a multiplayer version of Pong with added boni when passing the die.
More games are in development...
Comments