Board

Arduino Uno simulator, wired to a real breadboard

Mokxi models an Arduino Uno R3 down to the ATmega328P. Three timers in every waveform mode, USART0, the ADC, external and pin-change interrupts, sleep, EEPROM and the self-programming instruction. It runs at 16 MHz and at real time, next to a breadboard that behaves like one.

Start building free
  • 6peripheral areas modeled
  • 581projects ready to run
  • Real timeon your own machine
Arduino Uno R3: blinklive0.000 s 0.00x
Click to open it in the editor
The board is running real firmware right now. Click it to open the circuit in the editor.
The model

What is modeled

Taken from the board's own contract document and put in plain words, with what is missing beside it.

Modeled

Core
Every ATmega328P mnemonic with datasheet cycle counts
Timers
Three, in every waveform mode, including hardware PWM
USART0
Wired to the serial monitor, paced at the baud rate you set
ADC
On the analog pins, with the reference options
Interrupts
External and pin-change, with the real vector table
Sleep and EEPROM
Both, so an idle sketch costs almost nothing to simulate

Not modeled

  • Shields, as physical parts. Wire the same circuit on the breadboard instead.
  • The Arduino IDE library ecosystem. The runtime here is ours and Arduino-shaped, not the Arduino core.
Start here

Open one and press Run

Each of these opens in the editor exactly as it is drawn here.

Projects

Every built-in project on the Arduino Uno

Each has its own page with the circuit running, the code and a parts list.

Libraries

Arduino libraries that compile as they are

Paste a tutorial that includes one of these and it builds. For any other library, the build names the Mokxi header that does the same job.

Servo.h
attach, write, writeMicroseconds, read, detach, on any pin
Wire.h
I2C as a master; Wire.begin() puts it on A4 (SDA) and A5 (SCL)
SPI.h
transfer and transactions, on the board’s usual SPI pins
EEPROM.h
read, write, update, get, put and EEPROM[i], kept in the chip’s own 1 KB EEPROM
LiquidCrystal_I2C.h
the 16x2 LCD behind its I2C backpack
Adafruit_GFX.h and Adafruit_SSD1306.h
the 128x64 I2C OLED: text, pixels, lines, rectangles, circles, triangles and bitmaps
Adafruit_NeoPixel.h
WS2812 strips and panels
DHT.h
the DHT11 and DHT22: temperature, humidity and the heat index, as floats you can print

And 15 more, 23 in all: OneWire.h and DallasTemperature.h; Adafruit_BME280.h, Adafruit_BMP280.h and SparkFunBME280.h; RTClib.h; Adafruit_SHT31.h; Adafruit_PCF8591.h; Adafruit_ADXL345_U.h; LedControl.h; Adafruit_LEDBackpack.h; Adafruit_TCS34725.h; Adafruit_SGP30.h; Adafruit_INA219.h; Adafruit_ADS1X15.h; Adafruit_MCP23X17.h; Bounce2.h; HX711.h.

Questions

Which Uno?

The R3.

Why is the Uno beside the breadboard rather than in it?

Its headers are two inches apart, so it will not push into one. A real Uno is wired with jumpers, and so is this one.

Does my sketch compile here?

Yes, on your own machine. The compiling page in the docs says how.

Is it free?

Yes, all of it.

Try it on your own firmware

What you build here runs on the board on your desk, unchanged. Nothing to install and no account needed.