Arduino Uno Board Diagram

Arduino Uno Board Diagram — circuit diagram showing component connections+12V/24V SupplySensorPull-up RARDUINOUNOMCU / ReaderIndicatorSensor Circuit
Arduino Uno Board Diagram — interactive diagram. Open it in the editor to customise components and wiring.

This is a free printable arduino uno board diagram: download the diagram as SVG or open it and print to paper or PDF.

An Arduino Uno board diagram maps every header pin, on-board component, and power rail of the Uno R3, providing a reference for wiring external circuits, shields, and sensors correctly.

The Arduino Uno is a microcontroller development board based on the ATmega328P 8-bit AVR microcontroller. It is one of the most widely used entry-level platforms in electronics education, prototyping, and light-industrial automation. Understanding its pin-out and on-board components is essential for building reliable external circuits.

The ATmega328P operates at 16 MHz (driven by an external crystal) and provides 32 KB of flash program memory, 2 KB of SRAM, and 1 KB of EEPROM. The Uno exposes 14 digital I/O pins (D0–D13), of which six (D3, D5, D6, D9, D10, D11) are capable of PWM output at approximately 490 Hz (D5 and D6 at approximately 980 Hz due to Timer 0 configuration). Six analogue input pins (A0–A5) connect to the ATmega328P's 10-bit ADC with a reference of 5 V by default (giving a resolution of approximately 4.9 mV per step).

Power can be supplied via the USB-B connector (5 V from a host computer or USB charger), the barrel jack (7–12 V recommended, 6–20 V absolute limits), or directly to the 5 V or 3.3 V header pins. An on-board linear voltage regulator (rated at 1 A but thermally limited in practice to approximately 500 mA at moderate ambient temperatures) provides 5 V from the barrel jack input. A second regulator supplies 3.3 V at 50 mA from the 5 V rail. Digital I/O pins source or sink a maximum of 40 mA individually and 200 mA total for the entire port; exceeding these limits damages the microcontroller permanently.

The Uno R3 includes a dedicated ATmega16U2 (or ATmega8U2 on earlier revisions) USB-to-serial converter that provides USB communication and programming without a separate FTDI chip. Two pins — D0 (RX) and D1 (TX) — are shared with this USB-serial interface; using them for external devices while the USB interface is active causes conflicts.

The ICSP (In-Circuit Serial Programming) header provides direct SPI-mode programming access to the ATmega328P, bypassing the bootloader. A second ICSP header is for the ATmega16U2.

Shields — plug-in expansion boards — stack directly onto the Uno's headers. The Uno R3 pinout added the SDA/SCL I2C pins on a dedicated two-pin header above A4/A5, and an IOREF pin that allows shields to adapt to the board's operating voltage.

How to wire arduino uno board diagram

  1. Identify power supply pins and choose a supply method Locate the power header (6-pin block near the USB connector): IOREF, RESET, 3.3 V, 5 V, GND (two pins), and VIN. For USB-powered operation, the 5 V pin supplies regulated 5 V from the USB host. For barrel-jack input (7–12 V), the 5 V pin also supplies regulated 5 V. VIN gives access to the unregulated barrel-jack voltage. Never apply more than 20 V to VIN.
  2. Identify digital I/O pins and PWM capability Digital pins D0–D13 are in the 14-pin header on one side of the board. Pins D3, D5, D6, D9, D10, and D11 are marked with a tilde (~) — these support PWM with analogWrite(). D0 and D1 are RX/TX for serial; avoid using them if the USB serial interface is active. D13 has an on-board LED connected through a resistor — useful for quick status indication.
  3. Identify analogue input pins Pins A0–A5 are on the 6-pin analogue header. They connect directly to the ATmega328P's 10-bit ADC. Use analogRead(A0) through analogRead(A5) in code to read 0–1 023. The default reference is the internal 5 V rail. Do not apply negative voltages or voltages above 5 V to analogue pins.
  4. Identify SPI and I2C bus pins SPI uses D10 (SS), D11 (MOSI), D12 (MISO), and D13 (SCK). I2C uses A4 (SDA) and A5 (SCL), which are also duplicated on the two-pin SDA/SCL header above A4/A5 on the R3. Multiple I2C devices share the same two wires and are distinguished by their unique 7-bit addresses. SPI devices each require a separate chip-select (SS) pin.
  5. Connect an external component to a digital output For an LED: connect the anode through a 220 Ω – 470 Ω resistor to the selected digital pin. Connect the cathode to GND. Use pinMode(pin, OUTPUT) and digitalWrite(pin, HIGH/LOW) in code. For a relay module: connect the relay module's IN pin to the chosen Arduino digital pin, relay module VCC to 5 V, and relay module GND to GND. The relay module includes its own transistor driver and flyback diode.
  6. Connect an analogue sensor A resistive voltage-divider sensor (e.g. NTC thermistor + fixed resistor) outputs a voltage between 0 and 5 V. Connect the sensor output to an A0–A5 pin. Connect sensor supply to 5 V and return to GND. Use analogRead() to obtain a 0–1 023 value and apply the sensor's conversion formula in code to get the physical measurement.
  7. Upload a sketch and monitor Connect the Uno to a computer via USB. In the Arduino IDE, select board type 'Arduino Uno' and the correct COM port. Upload the sketch. Use the Serial Monitor (Tools > Serial Monitor) at the baud rate set in Serial.begin() to view debugging output. D0 and D1 LEDs on the Uno will flash during serial communication.

Specifications

MicrocontrollerATmega328P (8-bit AVR)
Operating voltage5 V
Input voltage (recommended)7–12 V via barrel jack
Digital I/O pins14 (D0–D13)
PWM output pins6 (D3, D5, D6, D9, D10, D11)
Analogue input pins6 (A0–A5, 10-bit ADC)
Maximum DC current per I/O pin40 mA
Flash memory32 KB (0.5 KB used by bootloader)
SRAM2 KB
Clock speed16 MHz

Safety warnings

Tools needed

Common mistakes

Troubleshooting

Sketch fails to upload — port not found or programmer error
Cause: Wrong COM port selected, USB driver not installed, or ATmega16U2 firmware issue Fix: Verify the correct COM port is selected in Tools > Port. On Windows, check Device Manager for the Arduino serial port. If the port appears but upload fails, try pressing the Reset button on the Uno just as the IDE begins uploading. Reinstall USB drivers if the port does not appear at all.
Analogue reading is noisy or unstable
Cause: Floating input, power supply noise, or missing decoupling Fix: Ensure the sensor output actively drives the analogue pin — a floating (unconnected) pin will read random values. Add a 100 nF decoupling capacitor between 5 V and GND close to the sensor. Take multiple readings and average them in software (oversampling) to reduce noise.
Uno resets randomly during operation
Cause: Power supply undervoltage under load, or noise on the RESET line Fix: Measure 5 V rail voltage under load with a multimeter. If it dips below 4.5 V, the power supply is inadequate for the current demand — increase supply capacity or reduce load. Add a 10 µF capacitor across the 5 V and GND header pins. Ensure the RESET pin is not connected to a floating wire.
Digital output pin stuck or not responding
Cause: Pin damaged by overcurrent or overvoltage, or incorrect pinMode setting Fix: Verify the pin is configured as OUTPUT in the code. Measure voltage at the pin — if stuck at 0 V or 5 V regardless of code, the pin driver is damaged. Confirm the pin was not previously subjected to more than 40 mA or more than 5.5 V. Use another pin as a temporary measure.

Frequently asked questions

How much current can Arduino Uno digital I/O pins supply?

Each digital I/O pin can source or sink a maximum of 40 mA. However, the total current across all pins simultaneously must not exceed 200 mA for the microcontroller's port. Exceeding these limits permanently damages the ATmega328P. LEDs should always have a current-limiting resistor; motors and relays must be driven through a transistor, MOSFET, or driver IC, not directly from an I/O pin.

What is the difference between digital pins and analogue pins on the Uno?

Digital pins (D0–D13) read or write logic HIGH (5 V) or logic LOW (0 V). Analogue pins (A0–A5) connect to the 10-bit ADC and measure voltage from 0–5 V, returning a value of 0–1 023. Analogue pins A0–A5 can also be used as digital I/O when the ADC is not needed. Digital pins D3, D5, D6, D9, D10, and D11 support PWM output.

What voltage levels are safe to connect to Arduino Uno I/O pins?

The Uno's I/O pins operate at 5 V logic. Applying voltages above 5.5 V to any I/O pin will damage the ATmega328P immediately. Many modern sensors and modules operate at 3.3 V — while a 3.3 V output will correctly register as HIGH on a 5 V input, a 5 V Arduino output can damage a 3.3 V-only module. A logic level shifter is required when interfacing with 3.3 V-only devices.

Can I power the Arduino Uno from batteries?

Yes. Connect a 9 V or 12 V battery to the barrel jack (positive to centre pin). Six AA batteries in series (9 V nominal) or an 8.4 V Li-ion battery pack are common choices. The on-board regulator will produce heat proportional to the difference between input and regulated 5 V — a 12 V input at 500 mA load dissipates 3.5 W in the regulator, which may require a heatsink or require choosing a lower input voltage.

What is the AREF pin used for?

AREF (Analogue Reference) sets the upper reference voltage for the ADC. By default the ADC uses the internal 5 V rail as its reference. Connecting an external precision voltage reference to AREF (and calling analogReference(EXTERNAL) in code) allows more accurate or narrower-range analogue measurements. Never apply more than 5 V to AREF, and always call analogReference() before using analogRead() when using an external reference.

Full written guides

Related diagrams

Free electrical calculators

Edit this diagram free in the online editor