circuit-debugger
Skill28 starsChanged 28 days agoMITView on GitHub
Systematic hardware debugging guide for Arduino/ESP32/RP2040 circuits. Use when user reports: circuit not working, components getting hot, no power, intermittent failures, unexpected behavior, sensor not responding, LED not lighting, motor not spinning. Guides through power checks, continuity testing, signal tracing, and component isolation using multimeter techniques.
1 other project uses a version of this.
Adopted by
Most recently taken up by
- wedsamuel1230/arduino-skillsword for word, first seen Nov 1, 2026
Other versions1 project uses a version of this.
Word for word · 1
- wedsamuel1230/arduino-skills★ 28100% same
Edited · 0
None found.
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository48 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- .cursor/rules/arduino-skills.mdcCursor rule
- cli-creatorSkill
- plugin-creatorSkill
- skill-creatorSkill
- arduino-cli-skillSkill
- arduino-code-generatorSkill
- arduino-project-builderSkill
- arduino-serial-monitorSkill
- arduino-workflow-routerSkill
- battery-selectorSkill
- board-selectionSkill
- board-supportSkill
- bom-generatorSkill
- boot-flash-recoverySkill
- bus-debuggingSkill
- code-review-facilitatorSkill
- datasheet-interpreterSkill
- embedded-build-workflowSkill
- embedded-project-loopSkill
- enclosure-designerSkill
- error-message-explainerSkill
- fault-forensicsSkill
- field-power-and-connectivity-triagerSkill
- freertos-patternsSkill
- hardware-tddSkill
- i2c-bringup-diagnosticianSkill
- library-selectionSkill
- memory-budgetingSkill
- memory-timing-debuggingSkill
- mermaid-diagram-generatorSkill
- micropython-developmentSkill
- non-blocking-patternsSkill
- ota-deployment-guardianSkill
- pico-sdk-developmentSkill
- pin-assignmentSkill
- power-budget-calculatorSkill
- probe-debuggingSkill
- readme-generatorSkill
- realtime-control-designSkill
- sensor-calibration-workbenchSkill
- sensor-signal-filteringSkill
- stm32-developmentSkill
- usb-debuggingSkill
- wireless-telemetrySkill
- wiring-safety-checkSkill
- zephyr-developmentSkill
The file
We split this skill into the rules it gives an agent
2 rules. About 0 are common, 2 are distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 233
If after this protocol you still can't find the issue:
- Distinctive: line 246
Use the shared Arduino skill contract: state assumptions, required tools and versions, implementation steps, tests/evidence by proof stage, …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Circuit Debugger
Systematic approach to diagnosing hardware issues in maker projects.
Resources
This skill includes bundled tools and references:
- scripts/generate_debug_sketch.py - Arduino sketch generator for I2C scanner, GPIO tester, ADC checker, PWM tester
- references/measurement-procedures.md - Comprehensive multimeter and oscilloscope guide
Quick Start
Generate I2C scanner:
uv run --no-project scripts/generate_debug_sketch.py --i2c --output i2c_scanner.inoGenerate GPIO tester:
uv run --no-project scripts/generate_debug_sketch.py --gpio --pins 2,3,4,5 --output gpio_test.inoGenerate all debug sketches:
uv run --no-project scripts/generate_debug_sketch.py --allInteractive mode:
uv run --no-project scripts/generate_debug_sketch.py --interactiveTrigger Phrases
- "My circuit doesn't work"
- "Component is getting hot"
- "No power to the board"
- "Sensor not responding"
- "Intermittent/random failures"
- "Works sometimes, not others"
Debugging Protocol
Phase 1: Power System Check (Do First!)
Visual Inspection (30 seconds)
□ Check for smoke, burn marks, or melted plastic
□ Verify power LED on microcontroller is lit
□ Look for loose wires or cold solder joints
□ Confirm correct polarity on polarized components (LEDs, caps, diodes)Multimeter Tests (Set to DC Voltage)
Test Point | Expected Value | If Wrong
------------------------|-----------------|------------------
VCC to GND on MCU | 3.3V or 5V | Check regulator, power source
Sensor VCC pin | Match datasheet | Check wiring, broken trace
Motor driver VCC | Logic + Motor V | Separate supplies needed?
Battery terminals | Rated voltage | Dead/discharged batteryCommon Power Issues:
| Symptom | Likely Cause | Fix |
| No voltage anywhere | Disconnected power, blown fuse | Check continuity from source |
| Low voltage (< 4V when expecting 5V) | Overloaded supply, bad regulator | Reduce load, check current draw |
| Voltage drops under load | Undersized power supply | Calculate total current, upgrade PSU |
| Reverse polarity | Swapped wires | Check all connections, may have damaged components |
Phase 2: Ground Continuity
Check the design: Non-isolated logic normally needs a shared reference. Preserve intentional isolation; do not bond isolated/high-voltage domains just to satisfy a continuity test. Power down before continuity/resistance tests.
Multimeter: Set to CONTINUITY (beep mode)
Test these pairs - ALL should beep:
□ Arduino GND ↔ Sensor GND
□ Arduino GND ↔ Motor driver GND
□ Arduino GND ↔ Display GND
□ Arduino GND ↔ Power supply negative
□ All breadboard GND rails connectedGround Problems Cause:
- Erratic sensor readings
- I2C/SPI communication failures
- Motors behaving randomly
- Displays showing garbage
Phase 3: Signal Verification
Digital Signals (Set multimeter to DC Voltage)
// Add this debug code to verify pin states
void debugPins() {
Serial.println("=== Pin States ===");
Serial.print("D2: "); Serial.println(digitalRead(2) ? "HIGH" : "LOW");
Serial.print("D3: "); Serial.println(digitalRead(3) ? "HIGH" : "LOW");
// Add more pins as needed
}Expected Readings:
| Signal Type | HIGH | LOW | Floating (Bad!) |
| 5V Logic | 4.5-5.5V | 0-0.5V | 1-3V unstable |
| 3.3V Logic | 2.8-3.6V | 0-0.3V | 0.8-2V unstable |
I2C Troubleshooting:
// Run this I2C scanner first
#include <Wire.h>
void setup() {
Serial.begin(115200);
Wire.begin();
Serial.println("I2C Scanner");
for (uint8_t addr = 1; addr < 127; addr++) {
Wire.beginTransmission(addr);
if (Wire.endTransmission() == 0) {
Serial.print("Found device at 0x");
Serial.println(addr, HEX);
}
}
}
void loop() {}| I2C Problem | Check |
| No devices found | SDA/SCL swapped? Pull-ups present? Correct address? |
| Address conflict | Two devices same address? Check AD0/AD1 pins |
| Intermittent | Weak pull-ups (try 4.7kΩ), long wires, noise |
Phase 4: Component Isolation
The Divide-and-Conquer Method:
1. Disconnect ALL external components
2. Verify MCU works alone (blink LED)
3. Add ONE component at a time
4. Test after EACH addition
5. When failure occurs, problem is last added componentComponent-Specific Tests:
LEDs:
□ Correct polarity? (long leg = anode = positive)
□ Current limiting resistor present? (330Ω-1kΩ typical)
□ Test LED alone with battery + resistor
□ PWM pin? Try digitalWrite firstMotors/Servos:
□ Never connect directly to MCU pin (use driver!)
□ Separate power supply for motors
□ Flyback diode on DC motors
□ Check stall current vs driver ratingSensors:
□ Correct operating voltage (3.3V vs 5V!)
□ Level shifter needed for mixed voltage?
□ Decoupling capacitor (100nF) near VCC pin
□ Pull-up resistors for I2C (4.7kΩ typical)Phase 5: Software vs Hardware
Quick Software Test:
// Minimal test - does the MCU even run?
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(115200);
Serial.println("MCU is alive!");
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
delay(500);
digitalWrite(LED_BUILTIN, LOW);
delay(500);
Serial.println("heartbeat");
}| If This Works | If This Fails |
| Hardware likely OK, check your code | Check USB cable, bootloader, board selection |
Quick Reference: Common Failures
| Symptom | First Check | Second Check | Third Check |
| Nothing works | Power supply | USB cable | Board selection in IDE |
| Gets hot | Short circuit | Reversed polarity | Overcurrent |
| Works then stops | Power brownout | Overheating | Memory leak |
| Erratic behavior | Floating inputs | Missing grounds | Noise/interference |
| I2C fails | Pull-ups | Address | Wire length |
| Motor jerky | Power supply | PWM frequency | Driver current |
Multimeter Quick Guide
Measurement | Setting | Probes
---------------|--------------|------------------
DC Voltage | V⎓ (20V) | Red=signal, Black=GND
Continuity | ))) or Ω | Either direction
Resistance | Ω | Component out of circuit!
Current | A or mA | IN SERIES (break circuit)When to Ask for Help
If after this protocol you still can't find the issue:
- Take clear photos of your wiring
- Draw a schematic (even hand-drawn)
- List exact components with part numbers
- Share your complete code
- Describe what you expected vs what happened
References
- See references/multimeter-guide.md for detailed measurement techniques
- See references/common-mistakes.md for beginner pitfall gallery
Shared Output Contract
Use the shared Arduino skill contract: state assumptions, required tools and versions, implementation steps, tests/evidence by proof stage, known limitations, and recovery/security notes.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

