Skip to content

Reference chart

Arduino Uno pins and limits

An Arduino Uno has 14 digital pins, six analog inputs and a row of power pins. This chart shows what each pin can do, which pins share a job, and the current limits that keep its ATmega328P chip alive.

Digital pins

Every digital pin can be an input or an output, HIGH (5 V) or LOW (0 V). Some have extra jobs. A ~ on the board marks the PWM pins.

PinAlsoNotes
0Serial RXUsed by USB uploads and Serial: leave it free if you can
1Serial TXSame as pin 0
2Interrupt 0
3~ PWM, interrupt 1
4
5~ PWMAbout 980 Hz
6~ PWMAbout 980 Hz
7
8
9~ PWMAbout 490 Hz
10~ PWM, SPI SSAbout 490 Hz
11~ PWM, SPI MOSIAbout 490 Hz
12SPI MISO
13SPI SCKThe board's own LED, L, is on this pin

PWM on pin 3 also runs at about 490 Hz. tone() stops PWM on pins 3 and 11, and the Servo library stops it on pins 9 and 10.

Analog pins

A0 to A5 feed the chip's 10-bit analog-to-digital converter. analogRead gives 0 to 1023 for 0 to 5 V, steps of about 4.88 mV, and takes about 100 µs per reading. Each one also works as a digital pin.

PinDigital pinAlso
A014
A115
A216
A317
A418I²C SDA
A519I²C SCL

To turn a reading into volts: volts ≈ reading × 5 ÷ 1024. A reading of 512 is about 2.5 V.

Talking to other chips

JobPins
Serial (UART)0 RX, 1 TX, shared with USB
I²CA4 SDA, A5 SCL
SPI10 SS, 11 MOSI, 12 MISO, 13 SCK, and the six-pin ICSP header
attachInterrupt()2 and 3 only

Power pins

PinWhat it isLimit
5VThe board's regulated 5 VOn USB, the board and everything on this pin share about 500 mA
3.3VA small 3.3 V regulator50 mA
VinThe power jack's voltage, or feed the board here7–12 V recommended
GND0 V, on several pins, all joined
AREFanalogRead's top voltage, if you change itNever above 5 V
IOREFTells a shield the board works at 5 V
RESETPull it LOW to restart the program

Current limits

These come from the ATmega328P's datasheet. Running past the absolute maximum can damage the chip for good.

LimitValue
Per pin, safe20 mA
Per pin, absolute maximum40 mA
All pins together200 mA
3.3V pin50 mA
A pin's inputBetween 0 V and 5 V, never outside

An input reads HIGH from about 3.0 V and LOW up to about 1.5 V. pinMode(pin, INPUT_PULLUP) adds a built-in resistor of 20–50 kΩ to 5 V, so a button can pull the pin LOW.

Using the chart

  1. Pick the pin for the job: a ~ pin for analogWrite, A0–A5 for analogRead, 2 or 3 for attachInterrupt().
  2. Work out the current. A red LED through 220 Ω draws about 12.5 mA: fine. A motor, a relay or a long LED strip is not.
  3. Add up every load. Under 20 mA a pin, and under 200 mA for the whole chip.

Free lesson

Now build it yourself

Each lesson comes in three short parts: see the idea, try it on a live board, then build it yourself, with quick checks as you go.

Try it yourself: free lesson

“Meet the board” is lesson 1 of 6 in Blink Bay, Embedded Systems World 1. Free with an account. It’s open as soon as you sign up.

Or start from the very first lesson, no account needed

The ideas behind it

Questions people ask

Which Arduino Uno pins can do PWM?

Pins 3, 5, 6, 9, 10 and 11, each marked with a ~ on the board. analogWrite works on them at about 490 Hz, or about 980 Hz on pins 5 and 6. On any other pin it can only switch fully on or fully off.

How much current can an Arduino Uno pin supply?

About 20 mA is safe. The ATmega328P's absolute maximum is 40 mA per pin, and running near that damages it. All the pins together should stay under 200 mA. For anything bigger, let the pin switch a transistor.

Can I use the analog pins as digital pins?

Yes. A0 to A5 also work as digital pins 14 to 19, so pinMode(A0, OUTPUT) and digitalWrite(A0, HIGH) work. They're the only pins that can use analogRead, so use the others first if you can.

Which pins are I²C on an Arduino Uno?

A4 is SDA, the data line, and A5 is SCL, the clock. Newer Uno boards repeat them as two pins labelled SDA and SCL beside AREF; they're the same connections, so you can't use A4 and A5 for anything else while I²C is running.

More charts