The overview, with examples running, is on the board page and The Arduino Nano model (every register).

The Arduino Nano

The Uno's chip on a board 45 by 18 mm, so it pushes into the breadboard instead of standing beside it, and two analog inputs an Uno has no pad for.

What it is

An ATmega328P at 16 MHz: the same die as an Arduino Uno R3, in the TQFP-32 package rather than the 28-pin DIP. Same core, same three timers, same USART, same interrupt vectors, same cycle counts. Everything docs/uno.md says about the chip is true of this board, and the reference page for it is The Arduino Nano model.

It goes in the breadboard

The Nano's two header rows are 0.6 inch apart, which is six holes. Push it in across the center channel and it straddles it with three spare holes on each side, the way a fat DIP does. That is the whole point of the board: no jumpers to reach it, and every pin has a strip of its own to wire from.

An Uno's headers are two inches apart, so an Uno stands beside the breadboard and reaches it with wires. If you are following a tutorial written for an Uno, the circuit is the same; only the wires get shorter.

A6 and A7

The TQFP package bonds out two ADC channels the DIP does not have, and they are analog inputs and nothing else. analogRead(A6) and analogRead(A7) work. pinMode, digitalWrite, digitalRead and the internal pull-up do not: there is no port pin behind them, on the real chip or here.

That is the one thing a Nano has that an Uno has not, and the built-in Dial project is a knob on A7 fading an LED on pin 9.

Pins

D0 to D13 down the left, A0 to A7 and the power pins down the right, with RESET brought out at both ends of the board on one trace. Pin 13 has the L LED on it, as on an Uno. 5V, 3V3 and three grounds are supplies for the rest of the breadboard, because the board is powered over USB.

Pins 3, 5, 6, 9, 10 and 11 do hardware PWM with analogWrite, and the silkscreen marks them with a tilde.

Stock Arduino libraries

A tutorial that includes Servo.h, Wire.h, SPI.h, EEPROM.h, LiquidCrystal_I2C.h, Adafruit_GFX.h with Adafruit_SSD1306.h and DHT.h compiles here as it stands. Each is Mokxi's own header under the upstream name, written on the drivers for the parts in the bin, and none of it is the upstream library's code.

  • Wire.begin() puts the I2C bus on A4 (SDA) and A5 (SCL).
  • EEPROM.h uses the chip's own 1 KB of EEPROM, through its real registers. It keeps what you wrote across a press of the board's reset, and a fresh Run starts it erased, every byte 255, because a Run is a new board.
  • Adafruit_NeoPixel.h stops with a message: a WS2812 bit is too short to make by hand on this board, and only the ESP32-C3 and ESP32-C6 drive the strip.

The code editor and compiling lists what each one covers and how it differs from the upstream library.

The firmware

Four built-in programs: Blink, Button, Serial and Dial. Press Run to load one, or write your own sketch and compile it in the browser.

A program built for the Nano runs on an Uno and the other way around, because it is the same chip and the same register map. The two boards carry different program strings here only so each one is offered its own examples.

What is not modeled

The USB-to-serial bridge, the FT232RL on an original or the CH340 on most clones. Serial reaches the serial monitor directly, and pins 0 and 1 stay plain GPIO. The Nano Every, the Nano 33 and the Nano ESP32 are different chips and are not this board. Everything the Uno leaves out is left out here too, because it is the same chip.

The addresses are the data sheet's and none is guessed at; the approximations are behaviors, and section 8 of the Arduino Nano model sorts every one of them. The three that show at the bench: the ADC has no error in it (no sample-and-hold, no nonlinearity, no noise, no offset), so a divider reads the same count every time where a real one wobbles; the 16 MHz crystal is exact, with no drift or jitter; and the 5 V rail is an ideal source that cannot sag, so a circuit that would brown a real board out runs cleanly here.