Arduino Uno R3
Interactive Arduino Uno R3 pinout with PWM, I2C, SPI and analog pins, current limits, Arduino IDE and PlatformIO setup, and compile-checked code.
Community draft — report a mistake
The Uno R3 is the classic 5 V board: an ATmega328P at 16 MHz, a USB-serial chip (an ATmega16U2 on originals, usually a CH340 on Indian clones), a 5 V regulator, and headers that fit almost every shield.
It has no Wi-Fi and only 2 KB of RAM, but it is simple and forgiving — 5 V logic matches most hobby modules, and it is the board the Playground emulates in full.
Power it from USB, or 7–12 V on the barrel jack or VIN. The 5V pin can supply a few hundred mA from USB; the 3.3V pin only about 50 mA.
Interactive pinout
Hover or tap a pin for its functions and traps. Filter to light up every I2C, ADC or boot pin.
- Safe for most uses
- Works, with a caveat
- Avoid unless you know why
- Power / control
Mind the current: 20 mA per pin, 200 mA for the whole chip. An LED with a 220 Ω resistor is fine. Relays, motors, buzzers and LED strips need a transistor or a driver module — never drive them straight from a pin.
5 V logic out, 5 V logic expected in. A 3.3 V module (ESP-01, many sensors) can be damaged by the Uno's 5 V outputs. Use a level shifter or a divider, and power 3.3 V parts from the 3.3V pin only if they draw under ~50 mA.
Leave D0 and D1 free. They are the USB serial lines. Anything wired there can block uploads and garble the Serial Monitor.
Set up your computer
- Install Arduino IDE 2.x from arduino.cc.
- Boards Manager → install Arduino AVR Boards (we compile against avr 1.8.8).
- Tools → Board → Arduino Uno, then pick the port that appears when you plug the board in.
Your platformio.ini:
[env:uno]
platform = atmelavr
board = uno
framework = arduino
monitor_speed = 9600[env:uno] platform = atmelavr board = uno framework = arduino monitor_speed = 9600
First program
// Blink the on-board LED (pin 13) of an Arduino Uno R3 or Nano.
void setup() {
Serial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);
Serial.println(F("FlashReady: blink started"));
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
delay(500);
digitalWrite(LED_BUILTIN, LOW);
delay(500);
}// Blink the on-board LED (pin 13) of an Arduino Uno R3 or Nano.
void setup() {
Serial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);
Serial.println(F("FlashReady: blink started"));
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
delay(500);
digitalWrite(LED_BUILTIN, LOW);
delay(500);
}Components with Arduino Uno R3
- 74HC595 8-bit shift register (DIP-16) Arduino C++
- A4988 stepper motor driver Arduino C++
- ACS712 current sensor (5 A / 20 A / 30 A) Arduino C++
- Active buzzer module (high-level trigger) Arduino C++
- ADXL345 3-axis accelerometer (GY-291) Arduino C++
- AHT20 temperature + humidity sensor Arduino C++
- APDS-9960 gesture / proximity / colour sensor (GY-9960) Arduino C++
- BH1750 lux sensor (GY-302) Arduino C++
- BME280 breakout Arduino C++
- BMP280 breakout (GY-BMP280) Arduino C++
- Capacitive soil moisture sensor v1.2 Arduino C++
- DHT11 Arduino C++
- DHT22 (AM2302) Arduino C++
- DS1307 real-time clock (Tiny RTC module) Arduino C++
- DS18B20 (1-Wire) Arduino C++
- DS3231 real-time clock (RTC) module Arduino C++
- E-paper display 2.13″ (250×122, SPI) Arduino C++
- IR flame sensor module (LM393) Arduino C++
- HC-05 Bluetooth serial module Arduino C++
- HC-12 433 MHz wireless serial module Arduino C++
- HC-SR04 ultrasonic sensor Arduino C++
- HMC5883L / QMC5883L magnetometer (GY-271) Arduino C++
- HX711 load cell amplifier Arduino C++
- INA219 DC current/voltage sensor Arduino C++
- IR obstacle avoidance sensor (FC-51) Arduino C++
- VS1838B IR receiver (38 kHz) Arduino C++
- Dual-axis joystick module (KY-023) Arduino C++
- 4×4 matrix membrane keypad Arduino C++
- L298N dual H-bridge motor driver Arduino C++
- 16×2 LCD + I2C backpack Arduino C++
- 16×2 character LCD (1602, parallel HD44780) Arduino C++
- 20×4 LCD + I2C backpack Arduino C++
- LDR light sensor module Arduino C++
- LM35 temperature sensor (TO-92) Arduino C++
- MAX30102 pulse oximeter module Arduino C++
- MAX485 TTL to RS485 module Arduino C++
- MAX6675 K-type thermocouple module Arduino C++
- MAX7219 8×8 LED matrix (4-in-1 FC-16 module) Arduino C++
- MCP2515 CAN bus module (with TJA1050) Arduino C++
- MG996R metal-gear servo (high torque) Arduino C++
- MicroSD card module (SPI) Arduino C++
- MLX90614 IR thermometer (GY-906) Arduino C++
- MPU6050 (GY-521) Arduino C++
- MQ-135 gas sensor module Arduino C++
- MQ-2 gas sensor module Arduino C++
- NEO-6M GPS module (GY-NEO6MV2) Arduino C++
- Nokia 5110 LCD (84×48, PCD8544) Arduino C++
- nRF24L01+ 2.4 GHz transceiver Arduino C++
- 10 kΩ NTC thermistor (bead or waterproof probe) Arduino C++
- Passive buzzer module Arduino C++
- HC-SR501 PIR motion sensor Arduino C++
- PN532 NFC / RFID module (13.56 MHz, V3) Arduino C++
- Rotary potentiometer (10 kΩ, B10K) Arduino C++
- Push button (6 mm tactile switch) Arduino C++
- PZEM-004T v3.0 AC energy meter (100 A with CT) Arduino C++
- Rain sensor (FC-37 / YL-83) Arduino C++
- RC522 RFID reader (MFRC522, 13.56 MHz) Arduino C++
- RDM6300 125 kHz RFID reader (EM4100) Arduino C++
- 1-channel relay module (5 V coil) Arduino C++
- KY-040 rotary encoder Arduino C++
- SG90 micro servo (9 g) Arduino C++
- SGP30 TVOC / eCO2 gas sensor module Arduino C++
- SH1106 OLED 1.3″ (128×64, I2C) Arduino C++
- SHT31-D Arduino C++
- SIM800L GSM/GPRS module (2G) Arduino C++
- KY-038 sound sensor (microphone + LM393) Arduino C++
- SSD1306 OLED 0.96″ (128×64, I2C) Arduino C++
- 1.8" ST7735 colour TFT (128×160) Arduino C++
- SX1278 LoRa module (Ra-02, 433 MHz) Arduino C++
- TB6612FNG dual DC motor driver Arduino C++
- TCRT5000 IR reflective sensor module Arduino C++
- TCS34725 RGB colour sensor Arduino C++
- TM1637 4-digit 7-segment display Arduino C++
- TTP223 capacitive touch module Arduino C++
- 28BYJ-48 stepper motor + ULN2003 driver Arduino C++
- VL53L0X ToF distance sensor Arduino C++
- Water level sensor (exposed-trace board) Arduino C++
- WS2812B addressable RGB LED strip (NeoPixel) Arduino C++
- YF-S201 water flow sensor (½″) Arduino C++
- ZMPT101B AC voltage sensor Arduino C++
Common errors
avrdude: stk500_recv(): programmer is not responding
Wrong port, wrong board, or something on D0/D1. Pick the port that appears when you plug in, set Tools → Board → Arduino Uno, unplug wires from D0/D1 and try again. Clones with a CH340 need its driver — see our driver links.
Port greyed out or missing
Charge-only USB cable or missing CH340 driver. Try a known data cable; install the driver from wch-ic.com only.
Sketch too big / low memory warning
The Uno has only 2 KB of RAM. Wrap fixed strings in F("…") so they stay in flash, and avoid the String class in long-running sketches.
Projects for Arduino Uno R3

ECG trace on an OLED for learning (Arduino Uno + AD8232) — not medical
See the P-QRS-T wave of a real heartbeat — the biology textbook diagram, live.
2 h · Student projects

Bluetooth RC car controlled from your phone (Arduino Uno + HC-05)
Drive a robot car from your phone over Bluetooth.
3 h · Robotics

Classroom noise meter with a traffic-light LED bar (Arduino Uno + KY-038)
A green-yellow-red bar that shows how loud the class is — and reminds when it’s too loud.
1 h · Student projects

Classroom voting machine for class elections — an EVM model (Arduino Uno + 16x2 LCD)
One BALLOT press, one vote, one long beep — a class-election model of an EVM.
2 h · Student projects

Colour sorting machine with two servos (Arduino Uno + TCS34725)
Drop coloured beads in the tube — the machine sorts them into bins by itself.
4 h · Student projects

Contactless infrared thermometer (Arduino Uno + MLX90614 + OLED)
Point it at anything and read its surface temperature.
1 h · Student projects

Debate and elocution competition timer with warning lights (Arduino Uno)
Green, yellow, red and a bell — speakers see their time without anyone waving a card.
2 h · Student projects

Digital compass with a needle on an OLED (Arduino Uno + GY-271)
A needle that always points north — and the maths that makes it work.
1.5 h · Student projects

Digital dice on an 8×8 LED matrix (Arduino Uno + MAX7219)
Press the button — the dice tumbles and lands on 1 to 6.
45 min · Student projects
Dual-axis solar tracker with four LDRs and two servos (Arduino Uno)
A small panel that follows the sun across the sky on two servos.
3 h · Robotics

Fire-fighting robot model that finds and puts out a candle (Arduino Uno + flame sensors)
Seeks a candle flame, drives up to it and sprays until it’s out.
5 h · Student projects

Fire and smoke alarm with heat-rise detection (Arduino Uno + MQ-2 + DS18B20)
Smoke, high heat or a fast temperature rise — any one sets off the alarm.
1.5 h · India utility

LPG gas leak alarm with SMS alert (Arduino Uno + MQ-6)
MQ-6 sensor, loud buzzer and an SMS to your phone when LPG builds up.
2 h · India utility
GPS tracker that texts its location (Arduino Uno + NEO-6M + SIM800L)
Texts a Google Maps link with its location to your phone.
3 h · Student projects

GSM farm motor control by SMS (Arduino Uno + SIM800L)
SMS "MOTOR ON" from your phone; the farm motor starts through a contactor and stops itself after 2 hours.
4 h · India utility

Digital tachometer with a Hall sensor and magnet (Arduino Uno + A3144 + TM1637)
A magnet, a Hall sensor and an interrupt — RPM of any rotating thing on a 4-digit display.
1.5 h · Student projects

Inverse-square law of light experiment (Arduino Uno + BH1750 + VL53L0X)
Move a light sensor away from a lamp and watch the brightness fall as 1/d².
2 h · Student projects

Control a lamp with any TV remote (Arduino Uno)
Use any spare TV remote to switch a lamp on and off.
1 h · Home automation

Joystick-controlled robot arm with three servos (Arduino Uno)
A thumb joystick turns the base, lifts the arm and works the gripper.
2 h · Robotics

Keypad door lock with a servo latch (Arduino Uno)
Type the PIN to open the latch — three wrong tries lock it out.
1.5 h · Student projects

Snake game on an 8×8 LED matrix with a joystick (Arduino Uno + MAX7219)
The old Nokia snake on 64 LEDs — steer it with a joystick.
1.5 h · Student projects

Line follower robot with two IR sensors (Arduino Uno)
Two IR sensors keep it on a black line.
3 h · Robotics

Medicine reminder with a “taken” button (Arduino Uno + DS3231 + LCD)
Beeps at dose time until the “taken” button is pressed; shows what was missed.
1.5 h · Home automation

Milk collection weighing scale with price display (Arduino Uno + HX711)
Weighs milk to the gram and shows the ₹ amount to pay on a 16x2 LCD.
2.5 h · India utility

Mini sumo robot for college robo-fests (Arduino Uno + HC-SR04)
Finds the opponent, charges, and never drives out of the ring.
4 h · Robotics

Morse code trainer that decodes your keying (Arduino Uno + OLED)
Tap dots and dashes — the screen reads them back and scores you.
1 h · Student projects

Classroom seismograph with a scrolling OLED trace (Arduino Uno + MPU6050)
Thump the table and watch the shaking scroll across the screen like a real seismogram.
1.5 h · Student projects

Obstacle-avoiding robot with a scanning ultrasonic sensor (Arduino Uno)
Looks left and right, then turns towards the clearer path.
3 h · Robotics

Garage parking assistant with a ToF sensor and LED bar (Arduino Uno)
An LED bar that goes green → yellow → red as you park.
1 h · Student projects

Measure g with a simple pendulum and an IR photogate (Arduino Uno)
An IR gate times every swing — the LCD shows the period and g live.
2 h · Student projects

Two-gate photogate timer for speed and acceleration (Arduino Uno + IR sensors)
Two IR gates time a run to the microsecond — speed and acceleration on an LCD.
2 h · Student projects

Heart-rate display with a live pulse wave (Arduino Uno + Pulse Sensor + OLED)
See your own pulse as a wave on a tiny screen — and hear every heartbeat.
1 h · Student projects

Quiz buzzer system for 4 teams with lockout (Arduino Uno + TM1637 + WS2812B)
Four teams, one winner — the first press lights its colour and locks out the rest.
2 h · Student projects

Automatic railway level-crossing gate model (Arduino Uno + IR sensors + servo)
Trains from either side close the boom; it opens only after the last coach has gone.
3 h · Student projects

Rain alarm for drying clothes and grain (Arduino Uno + rain sensor)
Three loud beeps the moment the first drops hit the sensor.
45 min · Weather

Reaction timer game with a 4-digit display (Arduino Uno + TM1637)
Wait for GO, hit the button — how fast are you?
45 min · Student projects

RGB mood lamp with WS2812B LEDs and a rotary knob (Arduino Uno)
Turn the knob for colour, press it for breathe and rainbow modes.
1 h · Home automation

RS485 Modbus sensor reader for long cable runs (Arduino Uno + MAX485)
Talk to industrial Modbus sensors over hundreds of metres of twisted pair.
1.5 h · Network & ISP tools

Digital clock that keeps time through power cuts (Arduino Uno + DS3231)
A clock that keeps exact time even through power cuts.
45 min · Student projects

Sargam piano with 8 keys and a buzzer (Arduino Uno + TM1637)
Eight buttons, one buzzer — play Sa Re Ga Ma and see the physics of each note.
1.5 h · Student projects

Automatic school bell timer with RTC and LCD (Arduino Uno + DS3231)
Rings every period on time, skips Sundays, and keeps time through power cuts.
2 h · India utility

Shop shutter burglar alarm with SMS and call (Arduino Uno + SIM800L)
Shutter forced or motion inside at night → siren, SMS and a ringing phone.
3 h · India utility

Queue token number display for a clinic or shop (Arduino Uno + TM1637)
Press NEXT and the “now serving” number blinks and beeps — survives power cuts.
1 h · India utility

Simon memory game with colours and tones (Arduino Uno + WS2812B + passive buzzer)
Watch, listen, repeat — one more colour every round.
1.5 h · Student projects

Touch-free smart dustbin (Arduino Uno + HC-SR04 + servo)
Wave your hand and the lid opens — closes by itself after 3 seconds.
1.5 h · Student projects

Solar water heater display — how many buckets of hot water? (Arduino Uno + DS18B20)
Tank temperature and “~6 buckets at 40 °C” on an LCD inside the house.
2 h · Home automation

Measure the speed of sound with an ultrasonic sensor (Arduino Uno + HC-SR04)
Echo timing at known distances gives the speed of sound — with a line fit and theory check.
2 h · Student projects

Cyclone and storm pressure alert from a barometer (Arduino Uno + BMP180)
A barometer that watches the pressure trend and beeps before a storm arrives.
1 h · Weather

Overhead tank overflow alarm (Arduino Uno + float switch)
A float switch near the top of the tank and a buzzer — no more water on the terrace.
1 h · India utility

Teach-and-repeat robot arm that remembers 40 poses (Arduino Uno)
Show the arm a pick-and-place routine once, and it repeats it for ever.
4 h · Robotics

Tilt-controlled servo with an MPU-6050 (Arduino Uno)
Tilt the sensor and the servo follows your hand.
45 min · Robotics

Backup battery power-cut alarm with SMS (Arduino Uno + INA219 + SIM800L)
SMS when your POP’s 12 V backup battery starts discharging or runs low.
2.5 h · Network & ISP tools

Four-way traffic junction model with countdown and pedestrian button (Arduino Uno)
Four signal heads, a countdown and a pedestrian button — a real junction cycle in miniature.
3 h · Student projects

Ultrasonic radar scanner with an OLED radar screen (Arduino Uno)
A sweeping sonar that draws what it sees on a little radar screen.
1.5 h · Robotics

Automatic wet and dry waste segregator model (Arduino Uno + moisture plate + servo)
Drop waste on the flap — it tips into the wet or dry bin by itself and keeps count.
4 h · Student projects