Pin conflict checker
List each signal and the pin you plan to use. Get the traps — strapping pins, ADC2 with Wi-Fi, input-only pins, 5 V into 3.3 V — with a fix for each.
pins.h
How it works
Each rule comes from the chip's datasheet and the board's schematic, using the same pin maps as our interactive pinouts:
- Boot-strapping pins (ESP32 GPIO 0, 2, 5, 12, 15) are read at reset to pick the boot mode. A pull-up on GPIO12 selects 1.8 V flash and the board won't boot.
- Input-only pins (ESP32 GPIO 34–39) can't drive anything and have no internal pull-ups.
- ADC2 (ESP32 GPIO 0, 2, 4, 12–15, 25–27) is shared with the Wi-Fi radio:
analogRead()fails while Wi-Fi is on. - 5 V signals into an ESP32 or Pico pin exceed its absolute maximum; use a divider for slow signals or a level shifter for I2C.
- Buses: the Uno's I2C is fixed to A4/A5 and its SPI to D11–D13; on the Pico, SDA and SCL must belong to the same I2C controller.
- Shared pins: two signals can't share one pin, but several I2C or SPI parts can share the bus lines.
The code generator runs these same rules over every sketch it can produce — none of its 288 combinations triggers an error or warning.