A complete software package for FSR dance pads.
Join the for any questions/suggestions
- React web UI to customize sensitivity
- Profiles & persistence
- Light support
- A Teensy or Arduino
- uses native keyboard library for Arduino and Joystick library for Teensy
- Python 3.8-3.12
- virtualenv
- Node 12-16 (needs updating for 17+)
- yarn
Follow a guide like fsr-pad-guide or fsr to setup your Arduino/Teensy with FSRs.
- Install Arduino IDE (skip this if you're using OSX as it's included in Teensyduino)
- Install Teensyduino and get it connected to your Teensy and able to push firmware via Arduino IDE
- In Arduino IDE, set the
Tools
>USB Type
toSerial + Keyboard + Mouse + Joystick
(orSerial + Keyboard + Mouse
) - In Arduino IDE, set the
Tools
>Board
to your microcontroller (e.g.Teensy 4.0
) - In Arduino IDE, set the
Tools
>Port
to select the serial port for the plugged in microcontroller (e.g.COM5
or/dev/something
) - Load fsr.ino in Arduino IDE.
- By default, A0-A3 are the pins used for the FSR sensors in this software. If you aren't using these pins alter the SensorState array
- Push the code to the board
- Open
Tools
>Serial Monitor
to open the Serial Monitor - Within the serial monitor, enter
t
to show current thresholds. - You can change a sensor threshold by entering numbers, where the first number is the sensor (0-indexed) followed by the threshold value. For example,
3 180
would set the 4th sensor to a threshold of 180. You can change these more easily in the UI later. - Enter
v
to get the current sensor values. - Putting pressure on an FSR, you should notice the values change if you enter
v
again while maintaining pressure.
- Install Python. On Linux you can install Python with your distribution's package manager. On some systems you might have to additionally install the python3 header files (usually called
python3-dev
or similar). - Install Node
- Install yarn. A quick way to do this is with NPM:
npm install -g yarn
- Install yarn. A quick way to do this is with NPM:
- Within server.py, edit the
SERIAL_PORT
constant to match the serial port shown in the Arduino IDE (e.g. it might look like"/dev/ttyACM0"
or"COM1"
)- You also may need to modify the
sensor_numbers
variable.
- You also may need to modify the
- Open a command prompt (or terminal) and navigate to
./webui/server
withcd webui/server
- Run
python -m venv venv
(you may need to replacepython
withpy
on Windows or potentiallypython3
on Linux) - Run
venv\Scripts\activate
(on Linux you runsource venv/bin/activate
) - Run
pip install -r requirements.txt
to install dependencies (might need to usepip3
instead ofpip
on Linux) - Then move to the
./webui
directory by doingcd ..
- Run
yarn install && yarn build && yarn start-api
- On Linux, you'll also need to edit the
start-api
script in./webui/package.json
to referencevenv/bin/python
instead ofvenv/Scripts/python
- On Linux, you'll also need to edit the
The UI should be up and running on http://localhost:5000 and you can use your device IP and the port to reach it from your phone (e.g. http://192.168.0.xxx:5000 )
- If you use localhost in your browser and if the UI looks choppy, try using your local IP instead
- If you see the following error, ensure the "Serial Monitor" isn't already open in Arduino IDE
serial.serialutil.SerialException: [Errno 16] could not open port /dev/cu.usbmodem83828101: [Errno 16] Resource busy: '/dev/cu.usbmodem83828101
- If you notice that your input is delayed and perhaps that delay increases over time, you can sometimes rectify that by restarting the server. Close your
start-api
window and run it again.
Create a new text file called start_fsrs.bat
and place it on your desktop.
start "" http://YOUR_PC_NAME_OR_IP:5000/
cd C:\Users\YourUser\path\to\fsr\webui
yarn start-api
Now you can just click on that file to open the UI and start the server.
The FSR firmware will configure Teensy devices as USB joysticks, and other Arduino devices as USB keyboards. Some Arduino boards such as the Arduino Leonardo and Sparkfun's Pro Micro can be configured as Joysticks using an additional third-party library.
Install ArduinoJoystickLibrary, by following the installation instructions in that project's readme. https://github.com/MHeironimus/ArduinoJoystickLibrary#installation-instructions
- Download https://github.com/MHeironimus/ArduinoJoystickLibrary/archive/master.zip
- In the Arduino IDE, select Sketch > Include Library > Add .ZIP Library.... Browse to where the downloaded ZIP file is located and click Open.
Find this line, and remove the slashes at the beginning to uncomment it.
// #define USE_ARDUINO_JOYSTICK_LIBRARY
#define USE_ARDUINO_JOYSTICK_LIBRARY
The RP2040 is the microcontroller used by the Raspberry Pi Pico. The Pi Pico only exposes 3 analog input pins, but the RP2040 actually has 4. Various other RP2040 development boards do make it easy to access all 4 analog pins, which is more suitable for building a 4-panel dance pad.
To run the FSR firmware on an RP2040-based device, install "Raspberry Pi Pico/RP2040" 3.6.1 or newer in the Arduino IDE boards manager. Make sure the "USB Stack" option in the Tools menu is set to "Pico SDK."