breadboard
03 · The canvas

The workbench

Tools, wiring, selection, and the live layer: how the canvas actually works.

Three tools

  • Select: click parts or wires to select and edit them in the Inspector; drag to move; drag a selected wire's midpoint dot to reshape it, or its end dots to re-plug it somewhere else.
  • Wire: click two holes or pins to connect them. While a wire is pending, Esc cancels.
  • Probe: click a hole to attach an oscilloscope channel (click again to remove). Two channels are available.

Automatic connections

Auto-wire parts in the toolbar opens a local connection planner. Choose a supported Arduino, Pico or ESP32 board and one or more I²C peripherals. Parts may sit on the workbench or a breadboard. Existing wires and copper strips count as connections, so only missing wires are proposed. The panel shows the supported bus pins and voltage for each controller.

Arduino Uno R3, Nano and Mega use the 5 V Wire bus. Uno R4 also offers the separate 3.3 V Qwiic bus, Wire1. Choose the bus used by your sketch. On a 5 V bus, recipes support DS3231, ADS1115, MCP4725, PCF8574, INA219 and AT24C32; 3.3 V-only parts are blocked. Use a compatible board or wire a suitable level shifter manually. Select all chooses only voltage-compatible parts. New boards arrive with their modeled USB cable connected. You can also use a 5 V supply at the board's 5V pin and GND; Uno R4 can use its modeled 6–24 V VIN input. Auto-wire does not compile or install firmware. It recognizes controller-mode Wire.begin() and Uno R4 Wire1.begin(); peripheral-mode addresses are unsupported.

Pico, Pico W, Pico 2 and Pico 2 W recipes use hardware I²C0 with GP4 for SDA and GP5 for SCL, plus the board's 3.3 V output and GND. Keep the USB cable connected, or use a 5 V supply at VSYS and GND. Auto-wire preserves firmware; load a suitable UF2 when needed, then run your program. Literal MicroPython pin assignments and I2C(0) defaults are recognized. Other pin mappings, I²C1, SoftI2C and pin assignments in compiled Pico programs need manual review or wiring. ESP32, C3, S2, S3 and C6 recipes also use their supported hardware I²C0 mappings and 3.3 V supply.

Supported peripherals include BME280, SSD1306 OLED, MPU-6050, DS3231, BH1750, ADS1115, MCP4725, PCF8574, INA219, AT24C32 and TCS34725. Review the translucent preview and expand each device for the pin list and reasons. Shared buses are checked for address conflicts, including existing devices outside your selection. For example, the modeled MPU-6050 and DS3231 both use 0x68 and need separate buses. Conflicting connections or a known program-pin mismatch block Apply.

Ask AI about wiring opens your normal copilot chat with an editable request and the selected parts. Nothing is sent until you choose Ask. Continue the conversation there; a supported proposal includes Review connections, which opens the same preview and local checks. A wiring proposal cannot add parts, change addresses, rewrite code or bypass those checks. AI requires an account and cloud API; local recipes work offline. Reviewable proposals require complete circuit and code context. Projects using private local files are not attached to chat.

Confirm the parts, program pins and unchecked items, then choose Add connections. One Undo removes all the new wires. Changes to the circuit or Code tab invalidate the preview; refresh a local recipe or ask the copilot for an updated proposal. Proposals restored from a previous browser session also require a fresh request. Auto-wire adds peripheral power and bus wires, so the controller still needs USB or an external supply. These checks cover the proposed connections, not the whole circuit: power capacity, bus speed, pull-up sizing and other circuitry need manual review. Adding wires pauses a running simulation; press Run in the top toolbar to restart with the new wiring before running your program. Use the instruments to test it. Neither recipes nor AI guarantee correctness.

The live layer

While the sim runs, the canvas is the instrument: LEDs glow with real brightness, displays render their actual framebuffers, fans spin at their computed RPM, meters read out inline, and hovering any hole, pin, or wire shows its live voltage, updating in place as the circuit changes. Selecting a part opens the Inspector on the right: values (resistance, voltage, colors), interactive controls (sliders, buttons, encoder arrows), a live reading, and the part's documentation hint.

Selecting a component also keeps its attached wires bright and fades the others, making connections easier to follow in a busy project. This includes wires connected through the same breadboard strip. Click empty space or press Esc to clear the selection and restore the normal view.

Touching the circuit

Click + hold a pushbutton
Press it; release to let go
Click DIP switch levers
Toggle each switch
Click + hold a keypad key
Press it; release to let go
Inspector sliders
Sensor conditions: temperature, light, gas, distance, tilt…
Space
Run / pause · ⟲ in the header restarts from power-on
The simulation is deterministic: the same circuit and the same inputs replay identically, every time. Accuracy never degrades to keep up: if your machine is slow, sim time just advances slower than wall time (the ratio shows in the header).

Editing a circuit that is running

Placing, deleting, moving or rewiring a part while the bench is running pauses it instead of restarting it, and circuit changed — Run to restart appears under the run controls. Nothing reboots until you press Run: a board mid-program keeps its state, and undo puts the circuit back and the bench simply carries on where it stopped — the pause lasts exactly as long as the change is waiting. Applying it is a power-on boot, exactly like ⟲. Changing a value — a resistance, a voltage, a sensor slider — never pauses anything; it updates the live circuit as you drag, even while a change is waiting. Uploading firmware or finishing a compile still reboots that board straight away, because that is what you asked for.

Scroll / pinch
Zoom
Drag empty space
Pan
F
Fit all to view
Minimap (bottom right)
Jump around a big bench