Hackaday Prize Entry: Lose Yourself To Dance

Not every project for The Hackaday Prize needs to solve a pressing concern, save the planet, or help people. Sometimes, it just needs to be cool. [Jeremy]’s project is certainly cool. He’s building a touch-sensitive disco floor for the awesomeness of Saturday Night Fever combined with the technical complexity of the Billy Jean music video.

We’ve seen a few disco floor builds over the years, and for the most part, [Jeremy] isn’t straying too far from a well-tread path. He’s using LED strips to light his build, cutting the frame for the floor out of plywood and translucent squares, and using an ATMega to control each panel. So far, nothing out of the ordinary.

The trick to this build is that every square has a capacitive touch sensor. Underneath each translucent panel is a bit of wire mesh. Because the disco floor has 144 nodes, running the standard capacitive sensor library just wouldn’t work; the delay in measuring each node adds up very fast. By rewriting [Paul Stoffregen]’s capacitive sensor library, [Jeremy] was able to run many panels at once.

Right now [Jeremy] has a single panel that responds equally well to bare feet as it does to motorcycle boots. It’s exactly what you need in an interactive dance floor, and we can’t wait to seen the entire floor running.

The 2015 Hackaday Prize is sponsored by:

8 thoughts on “Hackaday Prize Entry: Lose Yourself To Dance

  1. Hmm, that’s different. I’d think the pressure sensors seen on previous examples would provide better interactivity. A capacitive sensor can certainly tell if a foot’s on it. And maybe also number of feet or even type of footwear, but altering the lightshow based on that isn’t as intuitive as doing it by how hard someone is stepping down – which this method can’t detect.

    I also wonder if they might be fooled into detecting a foot when none is present, by all the sweat, sweat, sweat.

    1. I had originally played with pressure sensors. DIY velostat ones didn’t give me enough accuracy, especially since the plastic will be spanning about 16 squares. It became hard to localize the foot press if there were multiple points of pressure in a small area. This will also need to stand up to a week of constant abuse, so it can’t have moving parts that might fail.

      That said, the capactive sensors have been posing their own issues. Primarily with, as you guessed it, detecting someone when nobody’s there. I’ve been able to work that out with filtering the data, taking 20+ samples to calculate a single detection and having it auto calibrate as it goes.

  2. Boom…Boom…Boom, the pressure sensor is the way e-drums work. Or they are a enveloped analogue audio from the contact mic. Cacip… is too touchey feeley, ooh!

  3. if you want to know how hard someone is stomping at home then add a layer of hard foam. The pressure will translate to a higher input also factors the area as dispersed by the measured foot.

  4. I got the impression from the writeup that the sampling library was slow to begin with. He’s using an Atmega for EACH node. So the sample rate for all 144 would be the same. If the bulk of the behavior is independently managed on each Atmega then a 250k bus back to the master is plenty fast if all it’s used for is for polling status and behavior modification.

    I had the same problem sampling 100 inputs as well and kept missing “triggers”. I shifted the bulk of the work to smaller independent controllers managing a much smaller number of inputs and responding to state polls back to master. I wrote the code for each slave using assembly and none of that Arduino crap.

    The down side is the slightly higher cost and longer development time. The surprising upside is by working out a standard protocol, I can have capacitance touch, cherry switches and a blended banana for input and the master doesn’t care.

    1. My misunderstanding… The original code spends too much waiting between polls. So it changed from a polling to a interrupt based. Decreasing the likelyhood of timeouts across all 144 Atmegas…. got it. ;)

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.