I recently collaborated with Rudy Ristich over at Workshop 88, Nate Matteson, another DePaul faculty member, and some of my DePaul students on a hardware/software physical computing toy for a conference called Thotcon. All told, we ended up releasing about 1,500 custom conference badge circuit boards into the wild with a custom game loaded on them. Basically, we made the game, and the console that it went on!
The badge itself called for four RGB LEDs and three potentiometers. There is also a Micro USB port to connect the device to your computer. Given these limitations, we gave ourselves the goal of making the game almost entirely playable on the badge, but also developed a Serial interface once it was connected with your computer. For those of you familiar with design, this is an exercise in affordances. That is to say, we had to ask ourselves what possibilities these somewhat limited inputs and outputs could communicate to the player.
In the end, we landed on the idea of navigating space. I've been taking Chess lessons lately, and recalled the grid used there was very similar to the numbers and letters (see below) placed around the potentiometers. However, since there were three knobs, and we only needed two to navigate (essentially) this simple 2D cartesian plot, we added a third dimension to the game, thus implying navigation through "layers" in a maze.
The development process, for anyone who's worked on a hardware project, was the most challenging aspect of this assignment. We used a simple AVR Programmer to re-flash and test the badges each time code was updated, which took quite long. Further complicating things, we had a very short timeframe to get the game out the door (the design idea came in at the eleventh hour), and three different people programming for it simultaneously. This led to quite a few code merge problems, and in the end, left some work to still be done on the badges.
Over at Hackaday, user Kenjo wrote a pretty good project post on what went the badge looks like from the design and hardware side.
The code for the project (still being updated!) can also be found on Github. The primary libraries we're using are EEPROM, FastLED, and sleep_n0m for, respectively, storing data, controlling the LEDs, and power saving functionality.
Finally! Here are some pictures from the development process: