Arduino Nano

The Arduino Nano is functionally an Uno R3 in a smaller package: same ATmega328P silicon, same 32 KB flash, same 2 KB RAM, but with a mini-USB connector and breadboard-friendly DIP pin spacing. Most clones use the CH340 USB-serial bridge, originals use the FT232.

Specs

PropertyValue
MCUATmega328P, 16 MHz
Flash32 KB (0.5 KB bootloader)
RAM2 KB
GPIO14 digital (D0–D13) + 8 analog (A0–A7)
ADCA0–A7 (A6/A7 are analog-only — no digital function)
PWMD3, D5, D6, D9, D10, D11
I2C1 bus — A4 (SDA), A5 (SCL)
SPI1 bus — D11 (COPI), D12 (CIPO), D13 (SCK), D10 (SS)
UART1 port — D0 (RX), D1 (TX) — used by Serial-over-USB
OTANot supported

Flashing

USB cable plus STK500 bootloader. Flash from the Playground or pio run -t upload -e nano. If your clone needs the ATmegaBOOT_168_atmega328.hex "old bootloader" set board_upload.protocol = arduino and board_upload.speed = 57600 in platformio.ini.

Notes

  • A6 and A7 are analog-only. They cannot be used as digital pins or as I2C/SPI.
  • 2 KB RAM is the same constraint as the Uno R3 — keep dynamic allocation tight, prefer F("string literals") for serial output.
  • The Nano shares pins between the SPI and the SD-card pinout convention used by some shields. Make sure your wiring uses the right alternate function.

Compile flag

[env:nano]
platform = atmelavr
board = nanoatmega328
framework = arduino