The overview, with examples running, is on the board page and The Arduino Nano model (every register).
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 the Arduino Uno model 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
Fifteen down each side, with the USB socket at the top. The left row reads
1 (TX), 0 (RX), RESET, GND, then 2 to 12. The right row reads
VIN, GND, RESET, 5V, A7 down to A0, AREF, 3V3 and 13.
RESET is brought out on both sides on one trace. Pin 13 has the L LED on
it, as on an Uno. 5V, 3V3 and the two grounds are supplies for the rest of
the breadboard, because the board is powered over USB; VIN is ignored.
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 onA4(SDA) andA5(SCL).EEPROM.huses 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 byte255, because a Run is a new board.Adafruit_NeoPixel.hdrives a WS2812 strip. The bit is timed in AVR assembly, the way every AVR NeoPixel library does it, and at 16 MHz each high lands inside the data sheet's window. Interrupts are off while a frame goes out, somillis()loses a tick for every millisecond a long strip takes to send, as on the bench. The colors take three bytes an LED of the chip's 2 KB of RAM.
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.
The same panel offers Assembly (no Arduino): a Blink, a Button to LED, a
UART hello and a Timer interrupt in AVR assembly, each a single main.S with
no Arduino core under it. A .S tab beside an ordinary sketch works too. See
Writing assembly.
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 and the Nano 33 are different chips and are not
modeled. The Nano ESP32 and the Nano RP2040
Connect are different chips on this
outline, and each is a board of its own in the parts bin. 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.
Related
- The board page: /boards/nano
- The contract document: the Arduino Nano model
- The same chip beside the breadboard: the Arduino Uno
- The same chip with no USB: the Pro Mini