Design your own circuit
The circuit designer is where you choose the parts, put them on pins and get code for them. It works on your own projects: ones you start from nothing, copies of library projects, and projects you import.
Start a project
There are two ways.
From nothing. On the Projects tab, under Your projects, select New project. Type a Name, pick a Board, and select Create. The project starts with an empty circuit and a sketch that blinks the board's own LED and prints Ready. Add parts in the Circuit tab. For a Raspberry Pi 4 / 5 it starts with a Python script instead.
From a ready-made project. Open any lab, library project or the playground and select Customize at the top. The app makes a copy called the project's name followed by (mine), with the same parts, pins and code, and opens it. A copy of the playground is called My and the board's name, for example My Raspberry Pi Pico project.
Your projects are listed under Your projects on the Projects tab, with the board each is for. Everything is saved on this device as you work.
The designer
In a wide window, the middle column of your project has two views: Circuit, the designer, and Guide. In a narrow one, the designer is the Circuit tab, with the pin map above it.
The designer shows, from the top:
- Your design: the project's name. The pencil (Rename) opens Project details, where you change the Name and What it does.
- Board: which board the project is for.
- The parts, with Add part.
- Generate starter code for this circuit.
- Wiring, worked out for you: a From / To table for the real build, updated as you change the parts.
Add a part
Select Add part and choose one of the 21 kinds: LED, push button, knob (potentiometer), buzzer, light sensor, slide switch, relay module, temperature sensor, servo motor, distance sensor, motion sensor (PIR), touch sensor, tilt switch, door sensor (reed switch), obstacle sensor (IR), soil moisture sensor, water level sensor, gas sensor, sound sensor, DC motor and laser module.
The app gives the new part the best free pin for its kind, keeping away from risky pins when it can. Parts that read a voltage, such as the knob and the light sensor, go on an analog input. A distance sensor gets two pins, TRIG and ECHO.
If there is no suitable pin left, the app says so, for example No free pin left for this part on the Arduino Nano.
Each part in the list has:
- its name, which you can edit in place (up to 14 characters). The name is used for the variable names in generated code and on the bench;
- its kind;
- its pin (or TRIG and ECHO), as a list to choose from;
- for an LED, five colour dots;
- the cross (Remove), which takes it out of the circuit.
Assign pins
Choose a pin from the part's list. Pins best avoided are marked · avoid in red, but you can still pick them.
Or use the pin map:
Select the part in the list.
Tap a pin on the pin map. The part moves to that pin.
The pin map refuses pins that cannot work, with a message: a power or ground pin is not a signal pin, a pin without an analog input cannot read a voltage, and an input-only pin cannot drive an output.
Read the warnings
Under each part, the designer lists in amber anything wrong with how it is wired. Fix them before you build the real circuit.
| Warning | What it means |
|---|---|
| The pin does not exist on the board | Pick a pin from the list |
| The pin is also used by another part | Two parts share a pin; move one |
| The pin is read at reset to choose the boot mode | A part there can stop the board starting; pick another pin if you can |
| The pin is best avoided | It has another job on this board, such as the USB serial lines; the warning says which |
| The pin is input only | It cannot drive an LED, buzzer, relay, servo, motor or laser |
| TRIG and ECHO need two different pins | A distance sensor needs both its pins |
| The pin cannot read a voltage | Analog parts need an analog input |
| The board has no analog inputs | On a Raspberry Pi 4 / 5, analog parts need an ADC chip such as the MCP3008 |
| The pin has no PWM | An LED there can blink but not fade; a motor can switch on and off but not change speed |
| The HC-SR04 ECHO pin outputs 5 V | On a 3.3 V board, add a resistor divider or use the 3.3 V HC-SR04P |
| The MQ-2 can reach 5 V | On a 3.3 V board, add a resistor divider before the pin |
Move to another board
Pick another board from the Board list. Each part keeps its pin if that pin still suits it on the new board, and gets a new one if not. The project reopens on the new board, with the message Moved to the and the board's name, and a reminder to check the pin numbers in your code.
If the parts do not all fit, the move is refused: These parts do not all fit on the and the board's name.
Generate starter code
Select Generate starter code for this circuit. If the editor has code in it, confirm with Replace: the new sketch replaces what is there.
The starter sketch sets every part up in setup(), then exercises it, so a new design does something the moment it runs:
- LEDs light one after the other;
- relays, motors and lasers switch on and off;
- a servo sweeps;
- a buzzer beeps every two seconds;
- every input is printed to the serial monitor twice a second, for example
button=pressed knob=2048.
For a Raspberry Pi 4 / 5 the app writes a Python script for the gpiozero library instead.
After moving to another board, generating new starter code is the quickest way to get pin numbers that match.
Edit the code
Your project's code is saved with the project as you type; the editor's header says saved. There is no starter code to restore, so generate it again if you want a fresh start.
Rename or delete a project
Both are in the Export menu (the share icon at the top) of your own projects:
- Rename opens Project details, the same as the pencil in the designer.
- Delete project asks first. The project, its circuit and its code are removed from this device. This cannot be undone, so export a project file first if you might want it back.