Technical Specifications
- Microcontroller: Microchip ATmega328P
- Operating Voltage: 5 Volt
- Input Voltage: 7 to 20 Volts
- Digital I/O Pins: 14 (of which 6 provide PWM output)
- Analog Input Pins: 6
- DC Current per I/O Pin: 20 mA
- DC Current for 3.3V Pin: 50 mA
- Flash Memory: 32 KB of which 0.5 KB used by bootloader
- SRAM: 2 KB
- EEPROM: 1 KB
- Clock Speed: 16 MHz
- Length: 68.6 mm
- Width: 53.4 mm
- Weight: 25 g
We redistributed the original Arduino UNO schematic to be more readable below. We advise you to download it and open the PCB and schematic using Eagle CAD while you are reading this article.

Redistributed version of the original Arduino schematic. Click to enlarge.
The Microcontroller
It is important to understand that the Arduino board includes a microcontroller, and this microcontroller is what executes the instructions in your program. If you know this, you won't use the common nonsense phrase "Arduino is a microcontroller" ever again.
The ATmega328 microcontroller is the MCU used in Arduino UNO R3 as a main controller. ATmega328 is an MCU from the AVR family; it is an 8-bit device, which means that its data-bus architecture and internal registers are designed to handle 8 parallel data signals.
Memory
- Flash memory: 32KB nonvolatile memory for storing applications
- SRAM: 2KB volatile memory for variables
- EEPROM: 1KB nonvolatile memory for data persistence
Power
The MCU accepts supply voltages from 1.8 to 5.5 V. To use the maximum clock frequency (20 MHz), you need a supply voltage of at least 4.5 V.
Digital I/O
This MCU has three ports: PORTC, PORTB, and PORTD. All pins of these ports can be used for general-purpose digital I/O or for alternate functions. PORTC pin0 to pin5 can be ADC inputs. Some pins can be configured as PWM output. These pins are marked with “~” on the Arduino board.
Note: ATmega168 is almost identical to the ATmega328 and they are pin compatible. The difference is the ATmega328 has more memory.

ATmega168 pinout with Arduino labels; the ATmega168 and ATmega328 are pin compatible.

Arduino UNO R3 pinout.
ADC Inputs
This MCU has six channels—PORTC0 to PORTC5—with 10-bit resolution A/D converter. These pins are connected to the analog header on the Arduino board. Analog pins can also be used as digital I/O.

ATmega328 block diagram.
- AVCC: Power pin for the A/D unit
- AREF: Optional external voltage reference for ADC

Internal register settings for selecting the Vref source.
UART Peripheral
A UART (Universal Asynchronous Receiver/Transmitter) is a serial interface. The ATmega328 has one UART module. The pins (RX, TX) are connected to a USB-to-UART converter circuit and to pin0 and pin1 in the digital header. Avoid using UART if you're using USB serial.
SPI Peripheral
The SPI (Serial Peripheral Interface) is a serial interface. The ATmega328 has one SPI module. It is also used to program the MCU using a standalone programmer.
- 11 ↔ MOSI
- 12 ↔ MISO
- 13 ↔ SCK
TWI
The I2C or Two Wire Interface consists of two wires: SDA and SCL. These pins are available at the last two pins in the digital header or pin4 and pin5 in the analog header.
Other Functionality
Other functionality is included in the MCU, such as timer/counter modules. Refer to the datasheet for more information.

Technical Specifications
- Microcontroller: Microchip ATmega328P
- Operating Voltage: 5 Volt
- Input Voltage: 7 to 20 Volts
- Digital I/O Pins: 14 (of which 6 provide PWM output)
- Analog Input Pins: 6
- DC Current per I/O Pin: 20 mA
- DC Current for 3.3V Pin: 50 mA
- Flash Memory: 32 KB of which 0.5 KB used by bootloader
- SRAM: 2 KB
- EEPROM: 1 KB
- Clock Speed: 16 MHz
- Length: 68.6 mm
- Width: 53.4 mm
- Weight: 25 g
We redistributed the original Arduino UNO schematic to be more readable below. We advise you to download it and open the PCB and schematic using Eagle CAD while you are reading this article.

Redistributed version of the original Arduino schematic. Click to enlarge.
The Microcontroller
It is important to understand that the Arduino board includes a microcontroller, and this microcontroller is what executes the instructions in your program. If you know this, you won't use the common nonsense phrase "Arduino is a microcontroller" ever again.
The ATmega328 microcontroller is the MCU used in Arduino UNO R3 as a main controller. ATmega328 is an MCU from the AVR family; it is an 8-bit device, which means that its data-bus architecture and internal registers are designed to handle 8 parallel data signals.
Memory
- Flash memory: 32KB nonvolatile memory for storing applications
- SRAM: 2KB volatile memory for variables
- EEPROM: 1KB nonvolatile memory for data persistence
Power
The MCU accepts supply voltages from 1.8 to 5.5 V. To use the maximum clock frequency (20 MHz), you need a supply voltage of at least 4.5 V.
Digital I/O
This MCU has three ports: PORTC, PORTB, and PORTD. All pins of these ports can be used for general-purpose digital I/O or for alternate functions. PORTC pin0 to pin5 can be ADC inputs. Some pins can be configured as PWM output. These pins are marked with “~” on the Arduino board.
Note: ATmega168 is almost identical to the ATmega328 and they are pin compatible. The difference is the ATmega328 has more memory.

ATmega168 pinout with Arduino labels; the ATmega168 and ATmega328 are pin compatible.

Arduino UNO R3 pinout.
ADC Inputs
This MCU has six channels—PORTC0 to PORTC5—with 10-bit resolution A/D converter. These pins are connected to the analog header on the Arduino board. Analog pins can also be used as digital I/O.

ATmega328 block diagram.
- AVCC: Power pin for the A/D unit
- AREF: Optional external voltage reference for ADC

Internal register settings for selecting the Vref source.
UART Peripheral
A UART (Universal Asynchronous Receiver/Transmitter) is a serial interface. The ATmega328 has one UART module. The pins (RX, TX) are connected to a USB-to-UART converter circuit and to pin0 and pin1 in the digital header. Avoid using UART if you're using USB serial.
SPI Peripheral
The SPI (Serial Peripheral Interface) is a serial interface. The ATmega328 has one SPI module. It is also used to program the MCU using a standalone programmer.
- 11 ↔ MOSI
- 12 ↔ MISO
- 13 ↔ SCK
TWI
The I2C or Two Wire Interface consists of two wires: SDA and SCL. These pins are available at the last two pins in the digital header or pin4 and pin5 in the analog header.
Other Functionality
Other functionality is included in the MCU, such as timer/counter modules. Refer to the datasheet for more information.
