Final project: Tiny DDR
For my final project I have decided to make a tiny (finger-sized) Dance Dance Revolution machine. That is, I am making the thing which fills in the blanks to the following analogy: Skateboarding : Tech decks (pictured below) = Dance Dance Revolution : ___.
As I work on this project throughout the course, I will log my updates and progress below in reverse chronological order.
September 26: DDR machine sketching and scoping
In order to scope out the project I triangulated some reference photos of real-life DDR machines, like the one below, to draw out the minimum set of features necessary for my tiny DDR machine.
In the process I encountered a commercial tabletop DDR machine, the Dance Dance Revolution Classic Mini, which is hand-sized. My vision is to make an even smaller one, though. I wonder if I can lay claim to World’s Smallest DDR Machine…
Here is a quick sketch I did of my vision for the final product:
Some other miscellaneous thoughts I had: - This Arduino speaker set would be so perfect aesthetically… it’s not in the class inventory, but I might just buy it for myself as a treat. - I found some interesting 3D-printable files for DDR arrow keycaps. This one is simple, just one piece I could print pretty quickly using transparent filament to allow the LEDs to shine through the entire keycap. This one is more elaborate, involving multiple parts that fit together so that only the arrow is transparent, which is more faithful to real DDR pads. I have extra mechanical keyboard switches at home that I could use for this project as well. However, I’m not sure if the interaction will feel quite right, as the keyboard switches have quite a depth to their pressing range, whereas the DDR pads seem to be pressure sensing and thus don’t depress when stepped on. There are shallower switches in the class inventory which may be a nice in-between, but I’d have to figure out how to CAD the arrows on top of them myself.
September 25: custom DDR arrow icons
When I tried to make receptors (the hollow arrows at the top of the DDR screen) using the same concatenated rectangle and triangle I had before, I had a crucial realization:
They’re ugly.
Specifically they are ugly because the aspect ratio of the arrows is not square, so that the up/down arrows take up more vertical room than the left/right arrows. This motivated me to import the iconic DDR arrow icon (see below) into my code, which is square by design.
After doing some research I found that importing images into Arduino requires converting them into bitmaps. I found a tool called image2cpp which does the conversion. Since the resolution of my display (128px by 64px) is smaller than any of the DDR arrow images I was able to find online, I decided to use a pixel art tool to draw my own, using an image of a pixelated DDR arrow for reference.
I drew three square arrow sizes: 16px, 24px, and 30px, converted them to byte arrays, and put them all onto the (simulated) display at once just to get a sense of which one I liked best. I also left in one of the original rectangle + triangle arrows for size reference. In the below image, the arrows are (from left to right): 16px, 24px, 30px, original rectangle + triangle arrow.
The 30px is the most visually striking and takes up the screen space the best, but feels too big – there is not much room to display incoming arrows before they need to be pressed since the receptor would take up half the height of the screen.
The 16px would allow for a 2-player version, since 8 of them can fit across the width of the screen (unlike the other two sizes). If I have time I would love to implement the multiplayer (competitive) version, but for simplicity I decided to start with a single-player design, and for that design these icons feel too small.
So, I decided to go for the 24px icons.
September 22: QPAD prototype
For my Week 3 individual project I used the QPAD to prototype a very barebones version of the code for this project, where arrows are randomly generated below the screen and float upwards across the display. I loaded this onto the QPAD and implemented some simple visual feedback for the directional touch button presses.