Building a dance pad with FSR and Arduino

For dance gamers stuck at home and looking to bring an old pad back to life or build a new one. <3

What are FSRs?

FSR stands for Force-Sensitive Resistor. It is a thin piece of conductive material used to recognize varying degrees of pressure. At rest the FSR’s resistance is close to infinity, but it decreases when pressure is applied. As the resistance goes down, the voltage in the circuit goes up. The voltage can be measured, and its value indicates the amount of pressure on the sensor.

Why use FSRs for dance pads?

How to make it work


You will need:

Assembling the circuit

Below is a board with 4 sensors attached. Highlighted is part of the circuit serving one sensor. The pins on your Arduino will differ, refer to the manual to find the right ones. Position of wires on the breadboard matters! If you are unsure how a breadboard works, read this intro guide.

Points of interest:

Breadboard Diagram

If you wish to use more than one FSR per panel, connect them in parallel to the same resistor and pin. Pressing any of the FSRs will trigger the panel. You may also connect them to separate pins, and bind the pins to one key press.

Firmware and software

To interpret voltage readings, you will need to program your board with an Arduino sketch. At a minimum, the sketch should read voltage on the pins, and determine whether or not it is higher than a certain threshold. When it is, the board should send a keystroke or a joystick button press. A more advanced sketch would also linearize the voltage and handle double-triggering.

While you don’t necessarily need any software to use the board, it is helpful to at least output sensor readings to the command line for debugging. It could also be helpful to have an interface to change sensor thresholds and reload the sketch to the board.

Here are two existing FSR dance pad repositories worth checking out:

Pick an existing firmware + UI combination above, or roll your own, and the sensors should be ready to go! Verify that they register pressure and send back a key or a joystick button press. Then head to Stepmania input options, and bind the key presses to the corresponding panels.

Installing the sensors

Tape the sensors to the L-bracket or the frame in your pad, so that they are in contact with the panel. The sensor may not respond well if the pressure from the panel is distributed elsewhere. To fix this, put 1-2 layers of tape size of a thumbnail onto the center of the sensor. The pressure will go into this area first, making the sensors a lot more responsive. If your panels bend a lot, like in Cobalt Flux and similar home pads, reinforce the areas under the panels with some firm material, such as linoleum or tape.

Installation example: one FSR on the L-bracket in the up panel, two FSRs on dedicated brackets in the left panel. The control box is stored under the upper left metal panel.


Questions, corrections, feedback? Holler at u/SereniRi!