Building a DIY Dance Dance Revolution
The magical combination of the hardware store and an Arduino.
Firstly, if you don’t know what Dance Dance Revolution is — here’s VICE to explain it’s awesomeness:
If you DO know what Dance Dance Revolution is, did you know Konami run a tournament for all their rhythm games?! Here’s their live 2017 stream — ft. CHRS4LFE taking out the DDR title.
AND if you’re still in doubt of DDR’s brilliance — it even had a movie made about it! It’s really bad but worth a watch to believe how bad it is.
Anyway, I digress — this is the story of how I built my own two player DIY dance machine.
It all begins after school in the arcade.
Dance Dance Revolution was high on my extra-curricular activities list and after hours of blood and sweat and more sweat — I became above average at DDR.
Fast forward a decade later, I convinced myself that my basic electronics, soldering skills and shoddy woodwork teamed with Google and Bunnings, could pull off building a DDR for my lounge room.
*Bunnings is an Australian/New Zealand hardware store and a lot like Disneyland.
Now, having a dance mat at home started to become fairly common, at the height of DDR, but they were hideous, slippery buggers. I was sick of slip and sliding through my favourite songs and ditched it almost immediately.
So, here’s how I made my own sensors and wooden/acrylic dance mats:
- Must be made of wood and acrylic (Metalwork is too daunting)
- Must be plug and play — I needed both players to act as USB dance mats for StepMania; an open source rhythm video game and engine originally developed as a simulator of Konami’s arcade game series DDR
- Must utilise Arduino somehow for the sensors because I don’t know how to connect sensors to anything else
- Must be robust so I could dance/stomp/carry/store without an issue
My research consisted of a buttload of Instructables, Youtube and Google. Through this, I discovered that there were two possible ways this could go down:
1. Modify a plastic mat and glue it to something sturdy
2. Build my own structure and DIY sensors
Now, in my mind, the first option seemed like the easier route however I could already see myself buying a plastic dance mat, cutting it up, messing it up and having to wait for another one to be sent to me.
I decided I wasn’t patient enough for that.
So I went straight to Bunnings to get some MDF to trial this first video:
The wooden structure and Arduino communication I ended up including in my final dance mats are pretty similar to the above video. Therefore, I won’t go into detail about those parts. Just watch the video.
However, I wanted to share with you my approach to the sensors and how you can create it too with regular items from the hardware store.
For this particular video, they use what’s known as a comb circuit cut out of aluminium foil. When the two “combs” connect with another piece of foil it completes the circuit. See below:
Then, as you stomp on an arrow and the circuit connects — a keystroke would be sent to an Arduino. This meant that each arrow became a single letter on a giant 4-letter keyboard.
NOTE: This method will only work with Arduino Leonardo, Micro or Due. I tried to hack my Uno to work and it doesn’t — so don’t waste your time. https://www.arduino.cc/en/Reference/MouseKeyboard
Overall, this was a really great approach to building your own DIY dance mat — however, it lacked the click-y arcade button feel that I craved. So I went back to Google and found the holy grail of DDR DIY videos.
Meet Hieu Nguyen.
Hieu created an incredible arcade replica of Pump It Up(another version of DDR) with a detailed guide on creating your own sensors. I owe my Bunnings DIY sensors to him.
So, back to Bunnings!
SENSORS SENSORS SENSORS!
For the sensors I used the following:
- 12 x 1m aluminium flat bars (25 x 1mm) Link
- Suntuf Access Tape(foam tape) Link
- Sheet metal screws
- Copper tape with conductive adhesive Link (Melbourne supplier)
- Super glue
- Bolt cutter
- Floor protectors
- Duct tape
For the bars, I sourced 1m Aluminium Flat Bars(25 x 1mm) and cut them to size with bolt cutters.
HOT TIP: Bolt cutters > Tin Snips. Tin Snips bend the ends of the flat bar(see image below) and as a result affect how flush the bars sit on top of each other. This caused an unreliable connection between the bars. Bolt cutters slice those flat bars like jelly butter. FLAT smooth jelly butter.
2ND HOT TIP: Flat bars are located with the aluminium mouldings in Bunnings. I first tested copper bars but besides being not as malleable — they’re also hellish expensive($2 p/m vs. $50 p/m).
1. Cut 2 x 12 cm and 1 x 7cm of the flat bar and assemble as shown below.
2. Connect the 7cm length to a 12cm length with a very, very, very teensy amount of super glue. This isn’t the greatest solution as too much glue will cause the 7cm piece to lose connectivity with the 12cm piece. However, I reinforce the join in the next step.
3. Cut 7cm of copper tape. Make sure you have the copper tape with CONDUCTIVE adhesive. Wrap the tape around both edges of the superglued 7cm piece to reinforce the conductivity.
4. Drill holes through the bottom piece on each side.
BREAK: Before you proceed, make sure you have finished painting/varnishing your wooden base UNLIKE the next photo.
5. Secure the bottom bars to the inside of the dance machine arrows with sheet metal screws.
6. Cut 2 x small rectangles of foam and attach them to both sides of the 7cm piece. This will stop the top bar from touching the 7cm piece unless stepped on. Also cut out a longer section of foam tape and fix it onto the topside of the top bar.
Now comes the dodgy bit(if the previous steps weren’t already a little stodgy!).
It turns out if you ask anyone about hand soldering wire to aluminium they will just laugh at you. This is because you cannot solder to aluminium. In my defiance, I tried several ways of working around this:
- Scrub surface with olive oil/veggie oil/motor oil before soldering (Result: wire immediately came off at a gentle tug)
- Scrub surface with Coca-cola (again, see above^)
- Buy some crazy Aluminium Flux paste that will save your soul —I’m convinced this doesn’t actually exist because I couldn’t find it anywhere.
Post-defiance I accepted that this was not going to work and soldered onto what I already knew I could solder on to — copper tape with conductive adhesive :)
7. Place strips of copper tape where you intend to solder wires and solder quickly and not-burning-ly. This requires mad soldering skills, some flux or several attempts. Hang in there! If you try to solder for too long, the adhesive melts and your beautiful copper slides right off the bar. Not helpful.
Now to wire this bad boy up.
The individual sensors will connect to the Arduino in the following way:
- Top bar slot goes to 5V
- 1st bottom bar slot goes to Input (Analog/Digital)
- 2nd bottom bar slot goes to GND through a 10K resistor
We will connect four sensors to make up a single arrow.
When wiring the sensors to each other and then to the Arduino I had a lot of trouble getting it to work responsively. The layout below was the best config I could work out.
8. INPUT: Connect the four individual sensors together. Then, run wire from the set to the Arduino input pin.
I also highly recommend that you colour code your wires for each arrow. This helps infinitely when you’re trying to figure out why your dance machine isn’t working… or when your puppy chews through your cables and you need to rewire…
GND: On first attempt, I attached all the GND wires together like the 5V(which you’ll see in the next step). This causes every arrow to be triggered when one arrow is triggered. This is obviously useless. Hence why I have placed a random “plate” in the top left hand corner of the top arrow and connected the arrows to this.
9. Connect the four sensors for each arrow together and run that wire to the plate via a 10k resistor. Run the single plate to GND on the Arduino
10. Put little dabs of super glue on the bottom foam rectangles and place the top bar, non-foam side, on top of the bottom bar. Hold in place for a moment.
11. Connect all the tops of the sensors to the 5v on the Arduino as shown.
12. To make this plug and play, I connected all 6 wires(4 x INPUT, 1 x GND and 1 x 5V) to 6-pin JST SM Plug + Cable Sets.
13. Place square floor protectors in each corner of the acrylic. Get some duct tape rolled into itself to make it double sided and place on floor protectors. Place acrylic squares on top of sensors and hold into place.
14. Time to dance. There are eight points of each arrow to test for responsiveness.
And then, if all the sides and corners work, we have a DANCE DANCE REVOLUTION (DIY edition)!
If they don’t… inspect your wiring. It will work eventually, I promise.
As an extra measure, I also built this box to “plug and play” the mats into. There are a million tutorials for connecting arcade buttons to Arduino so I will leave you to Google that. These are then mapped to keystrokes within StepMania as a keyboard input.
Early prototypes of one square working:
And here’s the whole thing working with the help of Scott Pilgrim :)
So, last but not least, I’ll end with my largest disclaimer…
This is intended as a personal project and just the shoddy soldering alone is enough to burn down a house. Therefore, proceed better and with caution.
This also began as a cost-effective venture to own a more solid dance mat. However, with the amount of trials, experiments and tool collecting, it was quite the opposite. This is why I’m posting this article so hopefully it is a cost effective way for other people to own a dance mat :)
All my code for the Arduino is available on Github. It is an altered version of Super Make Something’s version to cater for 2 players and the way I wired the sensors: https://github.com/melaniehuang/dancedancerevolution
There is also a Processing sketch in there if you just want to test connectivity.
Please send any questions, recommendations or fire safety hazard warnings to firstname.lastname@example.org
A big thank you to my wonderful boyfriend-in-crime, Andrew Buntine, who helped me drill and saw through everything I was too afraid to attempt myself.