Arduino Board Models

Classic / Uno Family
Arduino Uno R3
Arduino Uno R3
ATmega328P @ 16 MHz
5V logic 14 digital 6 analog 6 PWM
Flash 32KB  ·  SRAM 2KB  ·  EEPROM 1KB
USB ATmega16U2 bridge  ·  Power 7–12V VIN
The definitive beginner board. Massive ecosystem of shields and tutorials. Best for learning and prototyping.
Arduino Uno R4 WiFi
Arduino Uno R4 WiFi
Renesas RA4M1 (ARM Cortex-M4) @ 48 MHz
5V logic WiFi BLE LED matrix 12-bit DAC
Flash 256KB  ·  SRAM 32KB  ·  EEPROM 8KB
Extra ESP32-S3 co-processor (WiFi/BLE), 12×8 LED matrix, CAN bus, built-in RTC
The modern Uno. Same footprint as R3 but dramatically more powerful with connectivity built in.
Arduino Mega 2560
Arduino Mega 2560
ATmega2560 @ 16 MHz
5V logic 54 digital 16 analog 15 PWM
Flash 256KB  ·  SRAM 8KB  ·  EEPROM 4KB
UART 4 hardware  ·  Power 7–12V VIN
More pins, more memory. Go-to for 3D printers (RAMPS), large LED matrices, and complex sensor arrays.
Nano Family
Arduino Nano
Arduino Nano
ATmega328P @ 16 MHz
5V logic 22 digital 8 analog Mini-USB
Flash 32KB  ·  SRAM 2KB  ·  EEPROM 1KB
Size 18 × 45mm  ·  Breadboard-friendly DIP form factor
Same power as the Uno in a tiny package. Perfect for space-constrained breadboard projects.
Arduino Nano Every
Arduino Nano Every
ATmega4809 @ 20 MHz
5V logic 24 digital 8 analog 5 PWM
Flash 48KB  ·  SRAM 6KB  ·  EEPROM 256B
USB SAMD11 bridge  ·  Size 18 × 45mm
The affordable modern Nano. More flash and SRAM than the classic, pin-compatible, cheaper price.
Arduino Nano 33 IoT
Arduino Nano 33 IoT
SAMD21 (ARM Cortex-M0+) @ 48 MHz
3.3V logic WiFi BLE IMU
Flash 256KB  ·  SRAM 32KB
Radio u-blox NINA-W102 (ESP32)  ·  IMU LSM6DS3 6-axis
IoT in the Nano footprint. WiFi, BLE, and a motion sensor — ideal for connected wearables and IoT nodes.
Arduino Nano ESP32
Arduino Nano ESP32
ESP32-S3 (Xtensa LX7 dual-core) @ 240 MHz
3.3V logic WiFi BLE MicroPython
Flash 16MB  ·  SRAM 512KB
USB Native USB-C  ·  Supports Arduino IDE and MicroPython
The most powerful Nano. ESP32-S3 at its core — screaming fast, WiFi+BLE built-in, massive storage.
USB / Pro Family
Arduino Leonardo
Arduino Leonardo
ATmega32U4 @ 16 MHz
5V logic 20 digital 12 analog Native USB
Flash 32KB  ·  SRAM 2.5KB  ·  EEPROM 1KB
USB Built into ATmega32U4 — acts as HID (keyboard/mouse/joystick)
The hacker's Uno. Native USB means it can impersonate keyboards, mice, and game controllers natively.
Arduino Due
Arduino Due
SAM3X8E (ARM Cortex-M3) @ 84 MHz
3.3V logic 54 digital 12 analog 2× DAC
Flash 512KB  ·  SRAM 96KB  ·  2× native USB
Extras CAN bus, 2× I²C, 4× UART, hardware SPI  ·  I/O 3.3V only!
Arduino's first 32-bit ARM board. Huge memory, fast clock — ideal for audio DSP, complex control systems.
Arduino MKR WiFi 1010
Arduino MKR WiFi 1010
SAMD21 (ARM Cortex-M0+) @ 48 MHz
3.3V logic WiFi BLE Crypto chip LiPo
Flash 256KB  ·  SRAM 32KB
Radio u-blox NINA-W102  ·  Security ECC508 crypto chip  ·  Built-in LiPo charger
The MKR form factor for IoT. Compact, secure, battery-ready. Built for connected products and cloud services.
Model Comparison
BoardMCUMHzFlashSRAM I/O VDigitalAnalogWiFiBLEUSB
Uno R3ATmega328P1632KB2KB5V146Bridge
Uno R4 WiFiRenesas RA4M148256KB32KB5V146Native
Mega 2560ATmega256016256KB8KB5V5416Bridge
NanoATmega328P1632KB2KB5V228Bridge
Nano EveryATmega48092048KB6KB5V248Bridge
Nano 33 IoTSAMD21 M0+48256KB32KB3.3V228Native
Nano ESP32ESP32-S324016MB512KB3.3V228Native
LeonardoATmega32U41632KB2.5KB5V2012Native HID
DueSAM3X8E M384512KB96KB3.3V54122× Native
MKR WiFi 1010SAMD21 M0+48256KB32KB3.3V227Native

Arduino Uno Pin Reference

Arduino Uno board

Digital Pins

PinFeaturesNotes
D0RXSerial receive
D1TXSerial transmit
D2INT0External interrupt
D3PWMINT1Timer2
D4GPIO
D5PWMTimer0
D6PWMTimer0
D7GPIO
D8GPIO
D9PWMTimer1
D10PWMSSSPI, Timer1
D11PWMMOSISPI, Timer2
D12MISOSPI
D13SCKSPI, built-in LED

Analog Pins

PinFeatures10-bit Range
A0ADC00–1023
A1ADC10–1023
A2ADC20–1023
A3ADC30–1023
A4SDAI²C data
A5SCLI²C clock

Power Pins

PinVoltageNotes
VIN7–12VBarrel jack input
5V5V regulated200mA max from USB
3.3V3.3V50mA max
GND0V3 pins total
RESETActive lowPull low to reset
IOREF5V or 3.3VShield voltage ref

Timers & PWM

ATmega328P Timer Overview

TimerBitsPinsDefault FreqUse
Timer08-bitD5, D6976 Hzmillis(), delay(), PWM
Timer116-bitD9, D10488 HzServo, precise timing, PWM
Timer28-bitD3, D11976 HzTone(), async PWM

PWM Frequencies (prescaler)

PrescalerTimer0/2 (8-bit)Timer1 (16-bit)
1 (CS=001)62.5 kHz62.5 kHz
8 (CS=010)7.8 kHz7.8 kHz
64 (CS=011)976 Hz (default)976 Hz (default)
256 (CS=100)244 Hz244 Hz
1024 (CS=101)61 Hz61 Hz

analogWrite() Resolution

analogWrite(pin, val) — val 0–255 maps to 0%–100% duty cycle at ~490 Hz (D3,D9,D10,D11) or ~980 Hz (D5,D6).

Formula: Duty% = (val / 255) × 100
For 50% duty: analogWrite(pin, 127)
For 25% duty: analogWrite(pin, 64)

Common Code Snippets

Blink with millis() (non-blocking)

const int LED = 13;
unsigned long prev = 0;
const long interval = 500;

void setup() { pinMode(LED, OUTPUT); }

void loop() {
  unsigned long now = millis();
  if (now - prev >= interval) {
    prev = now;
    digitalWrite(LED, !digitalRead(LED));
  }
}

Read Analog + Serial Print

void setup() { Serial.begin(9600); }

void loop() {
  int val = analogRead(A0);       // 0–1023
  float volts = val * (5.0 / 1023.0); // convert to volts
  Serial.print("A0: ");
  Serial.print(volts);
  Serial.println(" V");
  delay(500);
}

I2C Scanner

#include <Wire.h>

void setup() {
  Serial.begin(9600);
  Wire.begin();
  Serial.println("Scanning I2C bus...");
  for(byte a=1; a<127; a++){
    Wire.beginTransmission(a);
    if(Wire.endTransmission()==0){
      Serial.print("Found: 0x");
      Serial.println(a, HEX);
    }
  }
}

Debounce Button

const int BTN=2; bool state, last;
unsigned long debounce=50, t=0;

void setup(){ pinMode(BTN, INPUT_PULLUP); }

void loop(){
  bool reading = !digitalRead(BTN); // active low
  if(reading != last) t = millis();
  if(millis()-t > debounce) state = reading;
  last = reading;
}

LED Current-Limiting Resistor Calculator

Resistor needed
Nearest E24 value
Actual current (with E24)
Power dissipated in R

Multiple LEDs in series

Total Vf drop
Resistor needed
Feasible?

Arduino Quick Reference

Digital I/O

pinMode(pin, mode)INPUT, OUTPUT, INPUT_PULLUP
digitalWrite(pin, val)HIGH or LOW
digitalRead(pin)Returns HIGH or LOW

Analog I/O

analogRead(pin)0–1023 (10-bit, 5V ref)
analogWrite(pin, val)0–255 PWM duty cycle
analogReference(type)DEFAULT/INTERNAL/EXTERNAL

Time

millis()ms since boot (rolls ~49 days)
micros()µs since boot (rolls ~70 min)
delay(ms)Blocking delay
delayMicroseconds(us)Blocking µs delay

Math

map(x, iL, iH, oL, oH)Remap value range
constrain(x, lo, hi)Clamp to range
abs(x)Absolute value
sqrt(x)Square root (float)

Specs — Arduino Uno Rev3

MCUATmega328P @ 16 MHz
Flash32 KB (0.5 KB bootloader)
SRAM2 KB
EEPROM1 KB
Digital I/O14 pins (6 PWM)
Analog In6 pins (10-bit ADC)
I/O Voltage5V (NOT 3.3V tolerant!)
Max I/O current40mA per pin, 200mA total
USBAtmega16U2 USB-Serial bridge