Arduino Uno

The classic ATmega328P development board with 5V logic and a 16 MHz clock, the standard entry point for learning Arduino.

Arduino Uno: ATmega328P · 5V logic

What is the Arduino Uno?

The Arduino Uno is an open-source microcontroller board built around Microchip's 8-bit ATmega328P running at 16 MHz. It exposes 14 digital I/O pins (6 capable of PWM) and 6 analog inputs on a header layout that has become the de facto standard, so the vast majority of shields and tutorials are designed to fit it. All logic operates at 5V.

A second chip, the ATmega16U2, handles USB-to-serial conversion, letting the board appear as a virtual COM port over its USB Type-B connector for both sketch uploads and serial communication. The main ATmega328P ships with the Arduino bootloader and, because it sits in a socket rather than being soldered, it can be swapped out if it is ever damaged. The board carries 32 KB of flash (about 0.5 KB used by the bootloader), 2 KB of SRAM, and 1 KB of EEPROM for non-volatile storage.

Makers use the Uno as a general-purpose controller: read sensors on the analog and digital pins, drive LEDs, displays, and motors (through suitable drivers), talk to peripherals over I2C, SPI, or UART, and react in real time from code written in the Arduino IDE. Its forgiving 5V I/O, large community, and abundant example code make it the usual first board for prototyping and education.

Arduino Uno pin reference

PinFunctionType
D0 D0 (RX)UART RX · DigitalBidirectional (GPIO)
D1 D1 (TX)UART TX · DigitalBidirectional (GPIO)
D2 D2DigitalBidirectional (GPIO)
D3 D3 (PWM)PWM · DigitalBidirectional (GPIO)
D4 D4DigitalBidirectional (GPIO)
D5 D5 (PWM)PWM · DigitalBidirectional (GPIO)
D6 D6 (PWM)PWM · DigitalBidirectional (GPIO)
D7 D7DigitalBidirectional (GPIO)
D8 D8DigitalBidirectional (GPIO)
D9 D9 (PWM)PWM · DigitalBidirectional (GPIO)
D10 D10 (PWM)PWM · SPI SS · DigitalBidirectional (GPIO)
D11 D11 (PWM)PWM · SPI MOSI · DigitalBidirectional (GPIO)
D12 D12SPI MISO · DigitalBidirectional (GPIO)
D13 D13 (LED)SPI SCK · DigitalBidirectional (GPIO)
SDA SDA (A4)I²C SDA · DigitalBidirectional (GPIO)
SCL SCL (A5)I²C SCL · DigitalBidirectional (GPIO)
A0 A0Analog · DigitalBidirectional (GPIO)
A1 A1Analog · DigitalBidirectional (GPIO)
A2 A2Analog · DigitalBidirectional (GPIO)
A3 A3Analog · DigitalBidirectional (GPIO)
A4 A4 (SDA)Analog · I²C SDA · DigitalBidirectional (GPIO)
A5 A5 (SCL)Analog · I²C SCL · DigitalBidirectional (GPIO)
5V 5VPowerPower out
3V3 3.3VPowerPower out
VIN VINPowerPower in
GND GNDPowerPower in
GND2 GNDPowerPower in
GND3 GNDPowerPower in
RESET RESETDigitalDigital input
IOREF IOREFPowerPower out
AREF AREFDigital inputDigital input
NC NCNo connectNo connect

Specifications

Operating voltage
5 V
Clock speed
16 MHz
Flash
32 KB
RAM
2 KB
GPIO pins
20
ADC
6 channels · 10-bit
PWM channels
6
Dimensions
68.6 × 53.34 × 15 mm

Verified from the Tinkered component library · Arduino.

Circuit requirements

  • Logic level is 5V. All digital and analog pins read and drive 0-5V, so 3.3V sensors and modules generally need level shifting or a voltage divider on any line that feeds the Uno's inputs, and 5V outputs can damage 3.3V-only devices.
  • Three ways to power the board: USB (5V regulated), the 2.1mm center-positive barrel jack, or the VIN pin. When using the barrel jack or VIN, supply the recommended 7-12V so the onboard regulator has enough headroom; below ~7V the 5V rail can sag, and sustained voltage above ~12V overheats the regulator.
  • The 5V pin is a regulated output when the board is USB- or jack-powered. Feeding regulated 5V into it directly bypasses the onboard regulator and its protection, so only do this with a clean, current-limited 5V source.
  • Per-pin current is limited (roughly 20mA per I/O pin, ~50mA total on the 3.3V pin). Motors, relay coils, and LED strips must be driven through a transistor, driver IC, or relay module powered from a separate supply, not straight off a GPIO pin.
  • When powering peripherals or motors from an external supply, tie that supply's ground to an Arduino GND pin so signals share a common reference.
  • Pins D0 (RX) and D1 (TX) are shared with the USB serial link. Wiring devices to them can block sketch uploads and corrupt serial data.

Simulate the Arduino Uno in your browser

The Arduino Uno is fully simulated in Tinkered. Wire it into a circuit, write your firmware, and read real values back with no physical hardware. Test your logic before you touch a breadboard.

Open it in the simulator

Common Arduino Uno mistakes

Driving motors or relays directly from a pin

Each I/O pin sources only about 20mA. Connecting a DC motor, relay coil, or high-power load directly can exceed that limit and damage the pin or the microcontroller. Use a transistor, MOSFET, motor driver, or relay module with its own supply.

Assuming pins tolerate 3.3V devices both ways

The Uno runs at 5V logic. Its 5V outputs can over-voltage a 3.3V-only sensor or module, and some 3.3V devices are not 5V tolerant on their inputs. Add level shifting where the datasheet calls for it.

Underpowering through VIN or the barrel jack

The onboard regulator needs headroom. Supplying 5V or less into VIN/the jack leaves the 5V rail sagging and the board unstable. Use 7-12V there, or feed a clean regulated 5V into the 5V pin instead.

Wiring to D0/D1 while using Serial or USB

Pins 0 and 1 are the hardware UART shared with the USB-to-serial chip. Devices connected there interfere with uploading sketches and with Serial.print debugging. Move them to other pins or disconnect during upload.

Forgetting a common ground

When a sensor, module, or motor runs off a separate power supply, its ground must connect to an Arduino GND pin. Without a shared reference, signal readings are erratic or the circuit does not work at all.

Arduino Uno datasheet

Official Arduino Uno datasheetArduino

Popular Arduino Uno projects

Blink and first sketches

The classic starting point: toggle the onboard LED on pin 13, then wire external LEDs and buttons to learn digital output, input, and timing.

Temperature and humidity monitor

Read a DHT22 or similar sensor and show live temperature and humidity on a 16x2 LCD or an OLED display over I2C.

Ultrasonic distance and parking sensor

Use an HC-SR04 to measure distance and trigger LEDs or a buzzer as an object gets closer, a common intro to timing pulses in code.

Servo and robotic arm control

Drive one or more SG90 servos from PWM pins, optionally steered by potentiometers, to build a pan-tilt mount or a small robotic arm.

Obstacle-avoiding or line-following robot

Combine a motor driver, distance or IR sensors, and the Uno's logic to build a small autonomous rover, a popular first robotics build.

Environmental data logger

Sample analog sensors on a timer and record readings to EEPROM or an SD card module over SPI for later review.

Build with the Arduino Uno.

Drop the Arduino Uno into a circuit, write firmware, and simulate it in your browser, then deploy to real hardware. All in one editable Tinkered project.