Arduino Uno R3 — ATmega328P
Optiboot
ATMEGA328P · 16 MHz32,256 bytes application flash · 2 KB SRAM
YOUR BROWSER. YOUR WORKBENCH.
Write, compile, simulate, and upload Arduino code in your browser. A complete workspace for your Chromebook or computer, without installing a desktop IDE.
// A small start. A real circuit.
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
delay(1000);
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
}MEET CIRCUITERA
Circuitera brings the editor, AVR compiler, USB uploader, and serial tools together in one browser workspace. Build with real Arduino C++, keep sketches on your device, and go from your first blinking LED to a multi-file project. Explore supported circuits in the simulator, ask Dot about code and circuit context when access is enabled, or use the separate Terminal for general programming.
A FOCUSED TOOLKIT
The essentials, together. Ready when you are.
Compile Arduino C++ locally with AVR-GCC and WebAssembly. No compiler server.
Upload over USB with Web Serial, then verify the firmware by reading it back.
Send commands, follow serial output, and plot changing sensor values.
Find preinstalled libraries, their supported targets, and ready-to-use examples.
Autosaved sketches, multiple tabs, project files, and portable ZIP backups.
A browser workspace with an optional offline compiler. No desktop IDE required.
KNOW YOUR TARGET
Select the exact board and bootloader before you verify or upload.
Optiboot
ATMEGA328P · 16 MHz32,256 bytes application flash · 2 KB SRAM
New bootloader · Optiboot
ATMEGA328P · 16 MHz30,720 bytes application flash · 2 KB SRAM
Old bootloader · ATmegaBOOT
ATMEGA328P · 16 MHz30,720 bytes application flash · 2 KB SRAM
Compatible serial bootloader · UART0
ATMEGA328PB · 16 MHzRequires a compatible UART0 serial bootloader and confirmed clone wiring. Extra PB peripherals and all libraries are not universally verified.
STK500v2 · Wiring
ATMEGA2560 · 16 MHz253,952 bytes application flash · 8 KB SRAM
These profiles cover Uno R3, classic Nano V3, Mega 2560, and the existing ATmega328PB target. Mega compile/upload is available; Mega simulation is not yet supported. They do not add support for Uno R4, Nano Every, Nano 33, or other processor families.
01 / VERIFY
AVR-GCC runs in a Web Worker using WebAssembly. Verify builds your current sketch, reports real compiler errors, and shows flash and static RAM usage.
No remote compilation service. Library dependencies, local headers, and project source files go through the existing compiler pipeline.
02 / UPLOAD
Choose your USB serial port when Chrome asks. Circuitera uploads the compiled firmware with the selected board profile and reads it back before reporting success.
Use a data-capable USB cable and match the processor and bootloader. Connect board selects a port; Check board queries the bootloader without writing flash.
The guided hardware test performs a real upload. Web Serial requires a compatible browser and permission from you and, on managed devices, your administrator.
Browser upload guide03 / UNDERSTAND
Watch serial output, send a command, or turn sensor readings into a live plot. Match the baud rate to your sketch and keep debugging in the same workspace.
> Ready > temperature:23.7 humidity:51 > temperature:23.8 humidity:50 > temperature:23.6 humidity:51
Pause the display · add timestamps · export plot data
EXPLORE / SIMULATE
Place supported components, wire their terminals, and explore how an Arduino sketch drives a circuit. Open Simulate from the IDE to get started.
Start with an LED and a current-limiting resistor. Match the sketch’s digital pin to the wiring, connect ground, and check polarity. Supported LEDs respond to simulated signals, including PWM and RGB channel mixing.
Simulation support varies by component. Confirm voltage, current limits, and wiring on real hardware; a successful simulation does not guarantee a physical circuit is correct.
Explore circuit simulationCODE / RUN
Write ordinary C++ programs in Terminal, with their own documents, filename, input, and output. New workspaces default to C++.
Run compiles and executes C++ with a separate WebAssembly runtime. Read compiler diagnostics, send standard input, inspect exit status and timing, or press Stop to terminate a running program. This is separate from Arduino’s AVR firmware compiler.
The first run loads the runtime. Browser runtimes are not full desktop operating systems; other languages execute only when a real provider is configured.
Open Terminal C++ Terminal guideDOT
Ask about your current project, understand compiler diagnostics, and review suggested changes before inserting them.
Stream explanations, explore pin usage, and compare code edits in the existing Dot panel. Nothing changes until you choose to insert it.
Online AI assistance · your access gate stays in place
Open IDEBUILD ON WHAT WORKS
Servo motors, displays, sensors, and more. The IDE lists library versions, examples, dependencies, and test status for your selected board.
Position hobby servos with hardware-timed pulses. Uses Timer1 on Uno.
Uno compile/link status: PASS. Dependencies: None. Check the IDE for other targets.
Talk to I2C devices on A4 (SDA) and A5 (SCL).
Uno compile/link status: PASS. Dependencies: None. Check the IDE for other targets.
Hardware SPI communication on pins 10–13.
Uno compile/link status: PASS. Dependencies: None. Check the IDE for other targets.
Store small values in the Uno’s 1 KB nonvolatile memory.
Uno compile/link status: PASS. Dependencies: None. Check the IDE for other targets.
An additional software serial port on digital pins.
Uno compile/link status: PASS. Dependencies: None. Check the IDE for other targets.
Drive an HD44780 character LCD with parallel data pins.
Uno compile/link status: PASS. Dependencies: None. Check the IDE for other targets.
Temperature and humidity from DHT11 / DHT22 sensors.
Uno compile/link status: PASS. Dependencies: Adafruit Unified Sensor. Check the IDE for other targets.
Shared sensor metadata and measurements for Adafruit drivers.
Uno compile/link status: PASS. Dependencies: None. Check the IDE for other targets.
Graphics, text, bitmaps and fonts for compatible displays.
Uno compile/link status: PASS. Dependencies: Adafruit BusIO. Check the IDE for other targets.
Monochrome OLEDs over I2C or SPI. A 128×64 framebuffer uses 1 KB of SRAM.
Uno compile/link status: PASS. Dependencies: Adafruit GFX, Wire, SPI. Check the IDE for other targets.
Real I2C/SPI device and register access for Adafruit drivers.
Uno compile/link status: PASS. Dependencies: Wire, SPI. Check the IDE for other targets.
Control addressable RGB LEDs with the AVR timing implementation.
Uno compile/link status: PASS. Dependencies: None. Check the IDE for other targets.
Ultrasonic ranging with optional Timer2-based asynchronous ping.
Uno compile/link status: PASS. Dependencies: None. Check the IDE for other targets.
Receive and send infrared remote-control protocols. Uses Timer2 for reception.
Uno compile/link status: PASS. Dependencies: None. Check the IDE for other targets.
Scan matrix keypads with debouncing and key states.
Uno compile/link status: PASS. Dependencies: None. Check the IDE for other targets.
Nonblocking stepper motion, speed and acceleration profiles.
Uno compile/link status: PASS. Dependencies: None. Check the IDE for other targets.
PCF8574 I2C character LCD backpack. The pinned johnrickman API uses init().
Uno compile/link status: PASS. Dependencies: Wire. Check the IDE for other targets.
PICK UP WHERE YOU LEFT OFF
My Sketches autosaves in IndexedDB. Reopen a tab, rename a sketch, duplicate an experiment, or export everything before moving to another device.
Convert to Project keeps the current sketch and turns it into main.ino. Add .cpp, .c, and .h files, then verify them together. Shared functions need declarations in headers.
Close a tab without deleting its sketch. Export .ino, project ZIP, or Export All for a separate backup. Clearing browser data removes local work. Signed-in cloud projects complement local copies; keep an export before changing browsers or domains.
Arduino IDE guideSOURCE → FIRMWARE → CIRCUIT
Open a sketch or example. Edit Arduino C++ with autocomplete and pin hints.
Build locally. Read the compiler output and fix any errors.
Select the right board and allow Chrome to use its USB serial port.
Transfer the firmware, verify flash, and watch your circuit respond.
MADE FOR THE BROWSER
Or your laptop. Circuitera runs in a browser tab; hardware access depends on the browser and device permissions.
Use a current desktop Chrome or Edge browser with WebAssembly, Web Workers, and Web Serial. Other browsers may allow editing but lack the USB serial access required for uploads.
Your school must allow this site and serial-device access. Circuitera respects device policy; it does not bypass restrictions.
Prepare the offline compiler in the IDE while online. Cache the tools and libraries before disconnecting. Keep exports in case browser storage is cleared.
YOUR FIRST FIVE MINUTES
A STARTING POINT
Open examples as new sketches. Your current work stays saved.
Your first onboard LED
Read a digital input
Move a servo
Measure a distance
Write to a display
Talk to your board
The existing example unlock remains in place. Follow the wiring notes in each sketch and check library support for your board.
BEFORE YOU WIRE
The IDE’s Pinout panel follows your selected board. Use it to filter capabilities, or hover over literal pin arguments in the editor.
| Pin | Capabilities | Notes |
|---|---|---|
| D0 | DIGITAL · UART | RX · shared with the USB serial connection |
| D1 | DIGITAL · UART | TX · shared with the USB serial connection |
| D2 | DIGITAL · INTERRUPT | External interrupt INT0 |
| D3 | DIGITAL · PWM · INTERRUPT | External interrupt INT1 · PWM |
| D4 | DIGITAL | Digital input/output |
| D5 | DIGITAL · PWM | Digital input/output · PWM with analogWrite() |
| D6 | DIGITAL · PWM | Digital input/output · PWM with analogWrite() |
| D7 | DIGITAL | Digital input/output |
| D8 | DIGITAL | Digital input/output |
| D9 | DIGITAL · PWM | Digital input/output · PWM with analogWrite() |
| D10 | DIGITAL · PWM · SPI | SS · SPI chip select |
| D11 | DIGITAL · PWM · SPI | MOSI · SPI data to peripherals |
| D12 | DIGITAL · SPI | MISO · SPI data from peripherals |
| D13 | DIGITAL · SPI | SCK · also connected to the onboard LED |
| A0 | ANALOG · DIGITAL | 10-bit analog input (0–1023). Also digital pin 14. |
| A1 | ANALOG · DIGITAL | 10-bit analog input (0–1023). Also digital pin 15. |
| A2 | ANALOG · DIGITAL | 10-bit analog input (0–1023). Also digital pin 16. |
| A3 | ANALOG · DIGITAL | 10-bit analog input (0–1023). Also digital pin 17. |
| A4 | ANALOG · DIGITAL · I2C | 10-bit analog input (0–1023). Also digital pin 18. SDA · shared with the SDA header. |
| A5 | ANALOG · DIGITAL · I2C | 10-bit analog input (0–1023). Also digital pin 19. SCL · shared with the SCL header. |
| 5V | POWER | 5 V power rail, not a programmable I/O pin. |
| 3.3V | POWER | 3.3 V regulated output, up to 50 mA. Not a programmable pin. |
| GND | GROUND | Common ground reference. Join the ground of connected modules to GND. |
| VIN | POWER | External power input before the regulator. For first projects, power the Uno through USB. |
| RESET | RESET | Pulling RESET low restarts the microcontroller. The reset button does the same. |
| SDA | I2C · DIGITAL · ANALOG | I2C data. Electrically the same pin as A4, not an extra independent pin. |
| SCL | I2C · DIGITAL · ANALOG | I2C clock. Electrically the same pin as A5, not an extra independent pin. |
Classic Nano adds analog-only A6 and A7. Its I2C, SPI, and PWM assignments otherwise follow the ATmega328P mappings. For PB clones, confirm the physical header wiring.
A LITTLE HELP
No desktop IDE, extension, Linux setup, or account is required. Open the IDE in Chrome. The existing example collection may ask for its local unlock password; this is separate from opening and using the editor.
Yes, when the site and USB serial access are allowed. Uploading and Serial Monitor require Web Serial permission. If school policy blocks access, ask your teacher or IT administrator. You can still write and save sketches when browser storage is available.
In the IDE, open Offline and choose Prepare offline compiler while connected. Wait for the shell and all compiler assets to be cached. You can then edit, compile, and export offline. Storage can be evicted or cleared, so keep an Export All backup. Installation as an app is optional.
Use a USB data cable, choose the matching processor and bootloader, close other serial applications, and keep D0/D1 free. Classic Nano boards offer New (115200 baud) and Old (57600 baud) profiles. A USB bridge name does not identify the processor. Check board queries the bootloader; Test My Board performs a real upload.
Read the original output below the explanation. Click compiler diagnostics to jump to the source line. Check header spelling, declarations, and the preceding line. Flash verification failure means the uploaded bytes did not match; reconnect and retry before relying on that program.
In this browser’s IndexedDB database, on this device and this site origin. Signing in enables private cloud projects and cross-device access. Local copies remain tied to this browser and site origin. Export All before moving domains, clearing browser data, or changing devices.
Match the baud rate to Serial.begin(). The plotter accepts one number per line or labeled values such as temperature:23.7 humidity:51. Upload automatically releases the port from the monitor. Pausing the display does not need to stop incoming serial data. Export CSV saves retained plot data.
A passing test means the pinned sketch compiled and linked. It does not validate your wiring or every API combination. Check the selected board’s library status in the IDE. Display buffers, heap, and stack also need room beyond the reported static RAM usage.
Use the update notice to apply an available release, or choose Later. Active operations postpone the update; the app saves local work before an accepted reload. If an offline compiler asset is missing, reconnect and prepare the offline compiler again.
THE NEXT STEP IS YOURS