Troubleshooting Common Issues
Systematic debugging for the most common Touch Board problems — false triggers, no sound, upload failures, and paint issues.
A systematic approach
Before trying random fixes, isolate which part of the system has the problem. The Touch Board has four distinct subsystems:
- Power — is the board getting 5V?
- Touch sensor (MPR121) — is it detecting touches correctly?
- Audio (VS1053 + SD card) — is it playing sound?
- Electrodes — are the physical connections good?
Test each in order.
Power problems
Symptom: No LEDs light up when USB is connected.
Fixes:
- Try a different USB cable — many micro-USB cables are charge-only (no data wires)
- Try a different USB port on your computer
- Try a different USB power source (wall charger vs computer)
- Check that the USB cable clicks firmly into the Touch Board
Symptom: Board keeps resetting (LEDs cycle repeatedly).
Fixes:
- Power supply doesn’t provide enough current — use a charger that provides at least 500mA
- USB hub without external power — connect directly to computer
- Short circuit in your electrode connections — disconnect all crocodile clips and test bare board
No sound
Symptom: Board powers on (PWR LED lit) but no sound when touching electrodes.
Fixes (in order):
- Is the SD card inserted firmly (click in place)?
- Is the SD card formatted as FAT32? (exFAT won’t work)
- Do the MP3 files have the exact correct names:
TRACK000.mp3(uppercase, no spaces)? - Are the MP3 files actually in the root directory of the card (not inside a folder)?
- Is the audio cable connected? Is the volume up?
- Is the MP3 file a valid MP3? Try a known-good file from another source.
- Re-flash the default firmware (File → Examples → Touch Board → Touch_MP3)
Symptom: Some tracks play, others don’t.
Fixes:
- Check the specific missing track file — it may be named incorrectly
- Check file size — a corrupt or 0-byte file won’t play
- Some encoders produce MP3 files with non-standard headers; re-encode with Audacity (Export → MP3)
False triggers (triggering without touch)
Symptom: Sounds play randomly with nobody touching the electrodes.
This is the most common issue with painted/wired electrodes.
Fixes:
- Reduce cable length — long crocodile clip cables act as antennas. Keep under 50cm where possible.
- Keep cables apart — bundled cables can cross-talk. Spread them out.
- Reduce sensitivity — in your sketch:
MPR121.setTouchThreshold(60); // higher = less sensitive MPR121.setReleaseThreshold(40); - Add a guard electrode — run a grounded trace between electrode traces to reduce cross-coupling
- Power supply noise — switch from a computer USB to a wall charger; computers can inject noise
- Wet environment — moisture on electrodes creates false contacts. Ensure paint is fully dry.
- Electrode too large — large painted areas have high capacitance that pushes against the threshold. Reduce electrode size or increase threshold.
Touch not detected (electrode doesn’t respond)
Symptom: One electrode doesn’t trigger even when touched firmly.
Fixes (in order):
- Check crocodile clip connection at both ends
- Measure electrode resistance with a multimeter — should be under 1 MΩ
- Check for paint gaps in traces with a magnifying glass
- Try connecting directly to the electrode pad with a clip (bypass the trace) — if this works, the trace has a break
- Check the corresponding MP3 file exists and is valid
- In the Serial Monitor sketch (article 8), does the serial output show the touch? If yes, it’s a sound issue, not a sensing issue.
Arduino upload failures
Symptom: “avrdude: stk500v2_ReceiveMessage(): timeout” or similar.
Fixes:
- Select the correct board: Tools → Board → Arduino Leonardo (or Touch Board if installed)
- Select the correct port: Tools → Port — only one port should appear when the board is connected
- Close the Serial Monitor before uploading (it holds the serial port)
- Try the double-tap reset method: click Upload, then immediately double-tap the RESET button on the Touch Board — this forces bootloader mode for 8 seconds
- Try a different USB cable
Symptom: Board uploads successfully but doesn’t run the sketch.
- The sketch may have a crash. Add
Serial.println("setup start")at the very beginning ofsetup()and check the Serial Monitor.
Electric Paint issues
Symptom: Painted trace has too high resistance.
- Add more layers — each additional coat reduces resistance
- Ensure complete coverage with no thin spots
- Use slightly wider traces on long runs
Symptom: Paint cracks after the piece is assembled.
- The piece is flexing. Mount on a rigid backing.
- Paint was applied too thickly in one layer. Thin layers are more flexible.
Helpful diagnostic sketch
Upload this to see all electrode data in the Serial Monitor:
#include <MPR121.h>
#include <Wire.h>
void setup() {
Serial.begin(57600);
if (!MPR121.begin(0x5C)) { Serial.println("MPR121 failed"); while(1); }
MPR121.setInterruptPin(4);
}
void loop() {
MPR121.updateAll();
for (int i = 0; i < 12; i++) {
Serial.print(MPR121.getFilteredData(i));
Serial.print("\t");
}
Serial.println();
delay(50);
}
Open Serial Monitor at 57600 baud. You’ll see 12 numbers — the filtered capacitance reading for each electrode. Watch how the number for an electrode changes when you hover your hand near it vs touch it. This lets you see exactly what the sensor is doing.
Key takeaways
- Isolate the problem: power → touch sensing → audio → electrodes
- False triggers are usually caused by long cables, cable proximity, or high sensitivity settings — increase thresholds
- Non-responsive electrodes are usually broken paint traces or bad crocodile clip connections
- The filtered-data diagnostic sketch shows raw sensor values and is invaluable for debugging
- Re-flashing the default firmware (Touch_MP3 example) fixes most firmware-related issues