soldr.ai

Docs  /  Designing the build

How do you know which pin to use — and why does it actually matter?

A generic wiring diagram tells you "connect the sensor to a digital pin." It rarely tells you which pins on your exact board are already spoken for, which ones need a specific voltage, or which one everyone gets wrong.

4 min read Designing the build Any board

Why "any digital pin" is bad advice

Every board has pins that aren't actually free to use however you like, and a wiring guide written for "an Arduino" or "an ESP32" in general can't know which ones apply to your specific board. Three kinds of pin trip people up most often:

Why this matters more than it looks like it should

None of these mistakes show up as a wiring error you can see — the wire is physically connected, the pin number in your code matches the pin you soldered to. The board just doesn't boot, or one sensor reports garbage while the other reads fine, or a PWM output does nothing. Debugging that after the fact means learning your board's constraints the hard way, usually after parts are already ordered and wired.

How wiring generated for your exact board avoids this

  1. The board decides the map, not a generic template

    Wiring is generated against the real pinout of the specific board named in your build — not a placeholder diagram for "a microcontroller" that you're expected to adapt yourself.

  2. Reserved and strapping pins are avoided from the start

    Sensors and outputs are assigned to pins that are actually free to use on that board, rather than pins that happen to be numbered conveniently.

  3. Shared buses get distinct addresses

    Multiple I2C devices on the same build are checked against each other's addresses before wiring is finalized, not discovered as a conflict after the first one stops responding.

  4. The code uses the same pin map as the diagram

    Because both are generated from the same parts list, the pins in your sketch and the pins on your diagram are guaranteed to agree — a mismatch between "what the diagram says" and "what the code assumes" simply can't happen.

Screenshot
Soldr's wiring view for a generated build: a labelled pin-by-pin diagram for the exact board named, with a strapping pin visibly avoided and two I2C devices shown on distinct addresses.
Soldr wiring table for an Arduino Uno build: the DS18B20 sensor maps VCC to 5V, GND to GND and DQ to Pin 2, while the 16x2 I2C LCD maps SDA to A4 and SCL to A5
The wiring table this page describes, generated live for "a room temperature display that shows the reading on an LCD screen, using an Arduino Uno". SDA lands on A4 and SCL on A5 — the Uno's only hardware I2C pins, and exactly the assignment "any digital pin" would have got wrong. The one-wire DS18B20 gets Pin 2 instead, because it is not on the bus at all.

A worked example

An ESP32-based build using two I2C sensors — a temperature/humidity sensor and a distance sensor — needs both devices to sit at different I2C addresses on the same two wires, and needs to avoid GPIO0, GPIO2 and GPIO15, which affect how the ESP32 boots if something is driving them at power-up. Generating the wiring against the specific ESP32 variant named in the build handles both automatically, rather than leaving either as something to discover once the board won't start.

PartWhy it's therePrice
ESP32 30-Pin Development Board (CP2102)the controller₹400
DHT22first I2C-adjacent sensor in the build₹100
HC-SR501 PIR Motion Sensorsecond sensor, on a separate signal pin, not sharing the bus₹70
Core of the examplepin conflicts avoided before wiring, not after₹570

What you actually get

A wiring diagram matched to the exact board and exact parts named in your build, with the pin decisions already made against that board's real constraints — not a generic diagram you have to cross-check against a datasheet yourself before trusting it.

Reviewing the wiring is free Looking over the generated diagram and asking questions about it doesn't cost credits. Credits are spent when a build is generated, not when you review it.

If a pin assignment still looks wrong