Overview

The UNO R3 was designed to be the most accessible entry point to electronics prototyping. It runs at 5 V logic, making it directly compatible with thousands of sensors, modules, and shields produced over the past fifteen years. The ATmega328P is a mature, well-documented 8-bit AVR processor with a predictable, deterministic execution model that suits beginners learning about timing and hardware control.

USB connectivity is provided through a second microcontroller, an ATmega16U2, which acts as a USB-to-serial bridge between the host computer and the ATmega328P's hardware UART. This means the board appears as a virtual COM port and does not support native USB HID without custom firmware on the ATmega16U2.

The R3 revision added the SDA/SCL pins in a dedicated header position above the AREF pin (in addition to their shared positions on A4/A5), a second IOREF pin allowing shields to detect operating voltage, and a reset pin on the ICSP header. These additions formed what became known as the "R3" header standard, adopted by later Arduino boards.

Despite the release of more powerful successors such as the UNO R4 Minima and UNO R4 WiFi, the UNO R3 remains in active production because of its unmatched library support, shield compatibility, and simplicity.

Quick Overview

Feature Detail
MCU ATmega328P, 8-bit AVR, 16 MHz
Flash 32 KB (0.5 KB used by bootloader)
SRAM 2 KB
EEPROM 1 KB
Operating Voltage 5 V
USB Type-B (ATmega16U2 USB-to-serial)
Digital I/O 14 pins
PWM Outputs 6 (D3, D5, D6, D9, D10, D11)
Analog Inputs 6 (10-bit ADC, A0–A5)
Form Factor Arduino Uno
Dimensions 68.6 × 53.4 mm
Weight 25 g

Key Features

  • ATmega328P microcontroller — robust, thoroughly documented, enormous community support
  • 5 V operating voltage — compatible with virtually all legacy sensors and modules
  • 32 KB Flash, 2 KB SRAM, 1 KB EEPROM
  • 14 digital I/O pins with 6 capable of PWM output
  • 6 analog input pins with 10-bit ADC (returns 0–1023)
  • Dedicated SDA/SCL header pins (R3 standard) plus shared positions on A4/A5
  • ICSP header for direct SPI access and bootloader burning
  • ATmega16U2 USB-to-serial bridge — reliable virtual COM port on any host OS
  • IOREF pin allows shields to automatically detect board logic voltage
  • Maximum shield and library compatibility of any Arduino board
  • Programmable via Arduino IDE 1.x or 2.x — no additional board packages needed (installed by default)
  • 40 mA per I/O pin — can directly drive LEDs without current-limiting resistors in many cases

Technical Specifications

Parameter Value
Microcontroller ATmega328P (8-bit AVR)
Clock Speed 16 MHz
Flash Memory 32 KB (0.5 KB bootloader)
SRAM 2 KB
EEPROM 1 KB
Operating Voltage 5 V
Input Voltage (Recommended) 7–12 V via VIN / barrel jack
Input Voltage (Maximum) 6–20 V
Digital I/O Pins 14
PWM Pins 6 (D3, D5, D6, D9, D10, D11)
Analog Input Pins 6 (A0–A5)
ADC Resolution 10-bit (0–1023)
DAC None
DC Current per I/O Pin 40 mA
DC Current for 3.3 V Pin 50 mA
USB Connector Type-B
USB Interface ATmega16U2 USB-to-serial bridge (virtual COM port)
Native USB HID No
UART 1 (D0/D1)
I2C 1 (A4 = SDA, A5 = SCL; also dedicated R3 header)
SPI 1 (D10–D13 and ICSP header)
RTC None
DAC None
CAN Bus None
Wireless None
Dimensions 68.6 × 53.4 mm
Weight 25 g

Pinout

Arduino UNO R3 pinout diagram

Digital Pins (D0–D13)

Pin Function Notes
D0 RX (UART) Serial receive — shared with USB bridge
D1 TX (UART) Serial transmit — shared with USB bridge
D2 Digital I/O External interrupt (INT0)
D3 Digital I/O / PWM External interrupt (INT1), Timer2 PWM
D4 Digital I/O General purpose
D5 Digital I/O / PWM Timer0 PWM
D6 Digital I/O / PWM Timer0 PWM
D7 Digital I/O General purpose
D8 Digital I/O General purpose
D9 Digital I/O / PWM Timer1 PWM
D10 Digital I/O / PWM / SS SPI chip select, Timer1 PWM
D11 Digital I/O / PWM / MOSI SPI MOSI, Timer2 PWM
D12 Digital I/O / MISO SPI MISO
D13 Digital I/O / SCK / LED SPI clock, onboard LED

Analog Pins (A0–A5)

Pin Function Notes
A0 Analog Input 10-bit ADC
A1 Analog Input 10-bit ADC
A2 Analog Input 10-bit ADC
A3 Analog Input 10-bit ADC
A4 Analog Input / SDA I2C data (also usable as digital I/O)
A5 Analog Input / SCL I2C clock (also usable as digital I/O)

Power and Other Pins

Pin Function
VIN Unregulated input (7–12 V recommended, 6–20 V max)
5V Regulated 5 V output
3V3 3.3 V regulated output (50 mA max)
GND Ground (multiple pins)
RESET Pull LOW to reset MCU
IOREF Voltage reference for shields (5 V on R3)
AREF Analog reference voltage for ADC
SDA I2C data (dedicated R3 header, same as A4)
SCL I2C clock (dedicated R3 header, same as A5)

Power

The UNO R3 can be powered three ways:

  • USB Type-B: Connect to a computer or USB power supply. Provides regulated 5 V directly to the board. Best for development and desktop applications.
  • Barrel Jack / VIN: A centre-positive 2.1 mm barrel jack accepts 7–12 V DC (6–20 V absolute limits). The on-board regulator converts it to 5 V. Use this for standalone, battery, or wall-adapter-powered projects.
  • 5V Pin: A regulated 5 V supply applied directly to the 5V pin bypasses the on-board regulator. Use only with an accurately regulated source.

The ATmega328P can source or sink up to 40 mA per I/O pin, with a total package limit. Do not draw excessive total current from the 5 V rail — leave headroom for shields and sensors.

Getting Started

Step 1 — Install the Arduino IDE

Download Arduino IDE 2 from https://www.arduino.cc/en/software. The UNO R3 board package is pre-installed.

Step 2 — Connect and Select Board

Connect the UNO R3 via USB Type-B cable. In the IDE, choose Tools > Board > Arduino AVR Boards > Arduino Uno, then select the correct COM port under Tools > Port.

Step 3 — Upload Blink

void setup() { pinMode(LED_BUILTIN, OUTPUT); } void loop() { digitalWrite(LED_BUILTIN, HIGH); delay(1000); digitalWrite(LED_BUILTIN, LOW); delay(1000); }

Upload the sketch. The onboard LED on D13 will blink once per second.

Step 4 — Open the Serial Monitor

void setup() { Serial.begin(9600); } void loop() { Serial.println("Hello from Arduino UNO R3!"); delay(1000); }

Open Tools > Serial Monitor, set baud to 9600, and watch the output.

Programming

The UNO R3 is one of the best-supported boards in the Arduino ecosystem. It uses the standard Arduino AVR Boards package (built into the IDE). All standard Arduino functions are supported:

  • pinMode(), digitalWrite(), digitalRead()
  • analogRead() (10-bit, returns 0–1023)
  • analogWrite() (8-bit PWM on D3, D5, D6, D9, D10, D11)
  • Serial, Wire (I2C), SPI
  • tone(), pulseIn(), shiftOut()

The ATmega328P has no floating-point hardware; floating-point operations are handled in software and are slower than on 32-bit ARM boards.

Reading an Analog Sensor

int sensorPin = A0; void setup() { Serial.begin(9600); } void loop() { int sensorValue = analogRead(sensorPin); // 0-1023 float voltage = sensorValue * (5.0 / 1023.0); Serial.print("Sensor: "); Serial.print(sensorValue); Serial.print(" Voltage: "); Serial.print(voltage, 2); Serial.println(" V"); delay(500); }

Shield Compatibility

The UNO R3 defines the standard Arduino Uno shield form factor. Any shield labelled "Arduino Uno compatible" is designed to work with this board. Examples include:

  • Motor driver shields (L293D, TB6612FNG, L298N)
  • Ethernet and Wi-Fi shields
  • LCD and display shields
  • Sensor and proto shields
  • Data logging and SD card shields
  • Relay shields

The R3 header standard (dedicated SDA/SCL pins and IOREF pin) ensures compatibility with shields designed for R3 and later boards. The UNO R3 is the gold standard for shield compatibility.

Package Contents

Item Quantity
Arduino UNO R3 board 1
USB Type-B cable 1 (included in some bundles — verify at purchase)

Applications

  • Electronics education and learning to program microcontrollers
  • Prototyping sensor systems, data loggers, and display projects
  • Home automation with relay shields and radio modules
  • Robotics — motor control, servo positioning, line following
  • Art installations and interactive displays
  • DIY weather stations and environmental monitors
  • Simple MIDI controllers and music gadgets
  • Industrial prototyping where 5 V compatibility is required
  • Basis for custom shield development

Where to Buy

Retailer Link
Arduino Official Store https//store.arduino.cc/products/arduino-uno-rev3
Amazon https//www.amazon.com/s?k=Arduino+Uno+R3

Equivalent Boards

Board Key Difference
Arduino UNO R4 Minima Same Uno form factor, 32-bit ARM RA4M1 at 48 MHz, USB-C, 256 KB Flash, 32 KB SRAM, DAC, RTC, CAN FD — more powerful successor
Arduino UNO R4 WiFi Same as R4 Minima plus Wi-Fi, BLE, and 12×8 LED matrix
Arduino Nano Same ATmega328P at 16 MHz in a smaller breadboard-friendly form factor — not shield compatible
Arduino Mega 2560 ATmega2560, more I/O pins (54 digital, 16 analog), more memory — same AVR family, larger form factor

Documentation

Resource URL
Official Product Page https//docs.arduino.cc/hardware/uno-rev3
Arduino Store https//store.arduino.cc/products/arduino-uno-rev3

Notes

  • The ATmega16U2 USB-to-serial chip can be reprogrammed with custom firmware using the ICSP header and DFU mode, but this is an advanced operation.
  • The D0 (RX) and D1 (TX) pins are shared with the USB-to-serial bridge. Avoid using these pins for external sensors while the USB connection is active.
  • The 10-bit ADC returns values 0–1023. For higher-resolution analog measurement, consider the UNO R4 Minima (12-bit ADC).
  • EEPROM data persists through power cycles and program uploads. The EEPROM.h library provides read/write access.
  • The ATmega328P has no native USB HID capability. The board cannot emulate a keyboard or mouse without custom ATmega16U2 firmware.
  • Total current draw from the 5V regulator (when powered via VIN/barrel jack) should be kept below 800 mA for the on-board regulator's thermal limits.

Community

Revision History

Version Date Notes
v1.0 2026-06 Initial entry