I'm currently involved in a college team design project and we're creating a "dance" floor that can be switched on and off by stepping on a plexiglass tile.

I'm looking for the best way to gather an input from the floor button. We tried using a floor switch which is built to take the weight, but the travel of the button worried me, as more moving parts means more things can go wrong. Our prototype.

I tried doing something simpler by using 4 regular small buttons. This worked somewhat well but I don't think it would take weight very well.

I looked into other solutions - a flat force sensor (with no moving parts) seemed like a great solution - but they are relatively expensive compared to buttons. They also are analog. Although we can use an MCU to convert it into a simple "on/off" I'd prefer to avoid that.

I also looked at piezoelectric components. These seemed like the best bet, but again are analog and can produce a noisy signal.

Is there something like a no-travel, flat, resilient and cheap switch? Is there something like a force sensor but as a simple pushbutton digital switch?

Apologies if this is the wrong forum but I'm feeling a bit lost searching through the endless tables of DigiKey.

  • \$\begingroup\$ Another thing to search for is a strain gauge, but like the force sensor you'll likely need an external comparator circuit to convert its output to digital (assuming your uC doesn't have enough ADC channels for the number of tiles in your dance floor). \$\endgroup\$
    – The Photon
    Feb 24 '18 at 23:50
  • \$\begingroup\$ Someone else is looking for something similar. See my answer using guitar stomp-box switches: electronics.stackexchange.com/questions/320259/…. \$\endgroup\$
    – Transistor
    Feb 24 '18 at 23:55
  • \$\begingroup\$ try gluing a ceramic cap to the middle as a cheap piezo and then using quad OP Amps with signal conditioners to get the best SNR using BPF and envelope detection. Test with a spectrum analyzer. \$\endgroup\$ Feb 25 '18 at 0:05
  • \$\begingroup\$ "Dome" switches and microswitches operate with the least amount of travel. The key is to not use the switch itself to limit the travel -- you need to provide separate mechanical stops for the floor panel that can take the full weight that will be applied to it. \$\endgroup\$
    – Dave Tweed
    Feb 25 '18 at 0:14
  • \$\begingroup\$ This is not a trivial task, What's your budget? Mickey Mouse results? or solid floor that is portable and works. burrillandco.com/s-dance-floor-sensor \$\endgroup\$ Feb 25 '18 at 1:49

A solution that involves no mechanical travel would be one sided copper sheets or plates that are part of a 'mass' detection setup. An oscillator puts a frequency of 100 KHZ to 1 MHZ on each plate. When stepped on the bodies 'mass' loads down the RF such that the change can be detected.

Even more sensitive is one that picks up on the phase-shift caused by a body on the plate, compared to a second signal that is not phase shifted.

In both cases a LPF and a diode to convert AC to DC would be needed, along with pots to adjust sensitivity. Especially the phase shift type, as it may trigger just by getting close to the plate.

I assume these pads will form a 3 x 3 or 4 x 4 matrix, so you only need row and column drivers and sensors. That makes either 9 or 16 duplicate circuits. You may be able to cheat if you can get a mux like a 74C150 or CD4051 to scan for a changed input, like a keyboard scanner.


I agree that trying to do this with a button is very difficult. The problem is that there must be an upper limit to the force applied to the button, otherwise it may fail prematurely. It is not only a question of travel, but also of force. If you attempt to make a small button travel 0.5mm beyond its natural stop, and you have 100kg of force, the button will fail. People can stomp very hard.

I think the solution is to have the button PCB on a spring loaded platform, or maybe a high-quality closed cell foam pad. The tile would have to be on a rigid structure so that it has very limited range of motion. The idea is that the tile's motion is maybe 3mm, and the button throw is maybe 1mm. The extra 2mm of motion is absorbed by the foam. Hope that makes sense. If you use plexiglass instead of a tile, the deflection of the plastic may be enough travel to push the button.

Hope that makes sense.


I think buttons are still your best solution. To prevent them from being damaged I would add foam underneath the buttons.

Top : Tile.
Next: foam plate ~5mm. (or less, you need about the travel distance of the button) Next: wooden plate with holes.
In each hole place a small button with foam under the button.

You can use very small cheap buttons and use e.g. four per tile.

  • \$\begingroup\$ travel will vary with weight and flex from 30kg to 120kg and may have travel issues of floppy floor or over/under travel on buttons of a few mm \$\endgroup\$ Feb 25 '18 at 0:11
  • \$\begingroup\$ I was thinking of a stiff tile on foam which can just about bare the weight. (You can even put only foam around the edges.) Let's say tile weighs 5 Kg. Then an force of 10Kg would push it down e.g. 5mm foam height, tile of 30x30cm. If the tile is loaded on one side and you have four buttons are about 1/4 from the edges you get a travel distance of 3/4 of 5 = 3.75mm. \$\endgroup\$
    – Oldfart
    Feb 25 '18 at 0:22

The actual button doesn't need to take the weight. For a mechanical button you will need some amount of travel but it shouldn't be much. Maybe a couple of millimeters. The cap should contact the base plate just after the button is pressed. You can use springs to keep it up and stabilizing bars to make it not "wobbly"


detect the motion of each square using a microswitch

you can remove the actuator arm if needed

a microswitch has a large amount of travel after the contact closes, so it is not susceptible to being "mashed" easily

you still have to limit the motion of the floor somehow though

each floor panel could be like an upside-down open-top box resting on springy material like thick rubber

enter image description here


Not the answer you're looking for? Browse other questions tagged or ask your own question.