Arduino
// Develop Arduino projects avoiding common wiring, power, and code pitfalls.
$ git log --oneline --stat
stars:1,933
forks:367
updated:March 4, 2026
SKILL.mdreadonly
SKILL.md Frontmatter
nameArduino
descriptionDevelop Arduino projects avoiding common wiring, power, and code pitfalls.
metadata[object Object]
Voltage and Power Traps
- 3.3V vs 5V logic mixing damages boards — ESP32 is 3.3V, Uno is 5V, level shifter required
- USB provides max 500mA — not enough for motors, servos, or many LEDs
- Never power motors from Arduino 5V pin — use external supply with common ground
- Brown-out causes random resets — looks like code bugs, actually insufficient power
- Decoupling capacitors (0.1µF) near sensor power pins — reduces noise-related glitches
Wiring Mistakes
- Floating inputs read random values — always use pullup or pulldown resistor
- All components must share common ground — separate grounds = nothing works
- Long wires pick up noise — keep analog sensor wires short
- LEDs need current limiting resistors — direct connection burns LED and pin
- Reversed polarity destroys components — double-check before powering on
Pin Conflicts
- RX/TX pins (0, 1) conflict with Serial — avoid for GPIO when using Serial Monitor
- Some pins have special functions — check board pinout for I2C, SPI, interrupt-capable pins
- PWM only on pins marked with ~ —
analogWrite()on wrong pin does nothing - Internal pullup available —
INPUT_PULLUPeliminates external resistor for buttons
Timing Traps
delay()blocks everything — nothing else runs, no input reading, no interrupts servicedmillis()for non-blocking timing — compare against last action timemillis()overflows after ~50 days — use subtraction:millis() - lastTime >= interval- Interrupts for time-critical events —
attachInterrupt()responds immediately
Memory Constraints
- Uno has only 2KB RAM — large arrays fail silently with weird behavior
F()macro keeps strings in flash —Serial.println(F("text"))saves RAMPROGMEMfor constant arrays — keeps data out of RAM- String class fragments heap — prefer char arrays for stability
Serial Debugging
- Baud rate must match — mismatch shows garbage, not an obvious error
Serial.begin()required in setup — output before this goes nowhere- Serial printing slows execution — remove or reduce for production code
Upload Problems
- Wrong board selected — uploads but doesn't run correctly
- Serial Monitor holds port — close before uploading
- USB cable might be power-only — some cheap cables don't carry data
- Bootloader corrupted — reflash using another Arduino as ISP
Sensor Communication
- I2C devices share bus — check for address conflicts with scanner sketch
- 5V sensors on 3.3V boards give wrong readings or damage — check operating voltage
- SPI needs separate CS per device — can't share chip select lines