Skip to main content

Guide

The Arduino Uno pinout, explained: PWM, interrupts, I2C, SPI, and analog

A practical tour of the Arduino Uno's pins — which do PWM, which handle interrupts, where I2C and SPI live, and the current limits that quietly kill pins — with the exact pin numbers.

Jul 14, 2026 7 min readArduinoPinoutGuide

The Arduino Uno is built around the ATmega328P and runs at 5 V logic, 16 MHz. It has 14 digital pins (D0–D13) and 6 analog inputs (A0–A5). They look uniform on the silkscreen, but each group has capabilities the others don't. The full, verified map is on the Arduino Uno pinout page; this is the tour with the reasons.

PWM: pins 3, 5, 6, 9, 10, 11

Only six pins can output PWM — the ones marked with a tilde (~): 3, 5, 6, 9, 10, and 11. Use these for dimming LEDs, driving motors through a driver, or analogWrite() in general. The other digital pins are on/off only. If a design needs analog-looking output on a specific pin, it has to be one of these six.

External interrupts: pins 2 and 3

Only D2 and D3 support true hardware external interrupts (attachInterrupt()). For anything that must respond instantly and reliably — a rotary encoder, a tachometer, a fast button — the signal belongs on pin 2 or 3. Polling other pins in loop() works for slow events but will miss fast ones.

I2C and SPI: the shared buses

  • I2C is on A4 (SDA) and A5 (SCL). Note this steals two of your analog inputs, so an I2C sensor plus lots of analog channels can get tight.
  • SPI uses D13 (SCK), D12 (MISO), D11 (MOSI), and D10 (SS). D13 also drives the onboard LED, which can flicker during SPI traffic — harmless, but surprising.

Note: Pins 0 (RX) and 1 (TX) are the hardware serial port and are shared with the USB connection. Avoid using them for I/O if you also want to print to the Serial Monitor or upload sketches cleanly.

Analog inputs: A0–A5

The six analog pins feed a 10-bit ADC, so analogRead() returns 0–1023 across 0–5 V. Any of A0–A5 can also be used as a regular digital pin if you don't need the analog function. (The A6/A7 you may have seen exist on the Nano, not the Uno.)

The current limits that quietly kill pins

This is the spec beginners skip and then wonder why a pin died. Each I/O pin should source or sink about 20 mA (40 mA is the absolute maximum, not a target), and the whole chip has a 200 mA total budget across all pins. An LED needs a series resistor; a motor, relay, or LED strip needs a transistor or driver — never wire them straight to a pin.

Watch out: Driving a motor or relay coil directly from a GPIO pin is the single most common way to destroy a microcontroller. Use a transistor/MOSFET or a driver module, and add a flyback diode on inductive loads.

Get the pin roles right and the Uno is wonderfully forgiving. If you'd rather not track all of this by hand, describing the project on Banana Board assigns PWM, interrupt, and bus pins correctly and checks the current budget for you.

AI PCB designer

Vibe-design your PCB

Describe the board in plain English. Banana Board places the parts, routes the copper on two layers, checks it against the netlist, and hands you fab-ready Gerbers.

Start vibe PCB designing

Frequently asked

Which Arduino Uno pins are PWM?

Pins 3, 5, 6, 9, 10, and 11 — the ones marked with a tilde (~). They support analogWrite() for dimming and speed control; the other digital pins are on/off only.

Which Uno pins can do interrupts?

Only digital pins 2 and 3 support external hardware interrupts via attachInterrupt(). Use them for encoders, tachometers, and any input that must not be missed.

Where are I2C and SPI on the Uno?

I2C is on A4 (SDA) and A5 (SCL). SPI is on D13 (SCK), D12 (MISO), D11 (MOSI), and D10 (SS), with D13 also wired to the onboard LED.

How much current can an Arduino Uno pin handle?

About 20 mA per pin as a safe working figure (40 mA absolute maximum), with roughly 200 mA total across the whole chip. Use a resistor for LEDs and a transistor or driver for motors and relays.

Build it, do not just look it up

Describe your circuit in one sentence and Banana Board wires it to these exact pins, validates it, and lays out a fab-ready PCB.

Start building free