Uno Pins

This page contains assorted notes on Arduino Uno's pin layout, naming, usage, etc. Other models have strong similarities, but may differ in assorted details.

Motivation

There are a number of web pages (etc) that present information on the Arduino Uno's pin usage (e.g., layout, naming, usage). However, most of them contain diagrams and images which aren't accessible to blind readers. So, I wanted to put together a resource that is entirely text based.

Header Strips

The Uno has four (female) header strips. These provide all of the analog and/or digital connectivity that any add-on circuitry is likely to require. In particular, they are used by all of the Uno's "shield" boards.

If the Uno is placed with the USB socket at the upper left, the "reset" button will be just above it, near the top edge. A pair of header strips sits just to the right of this button:

  • first header strip
    • SCL - serial clock
    • SDA - serial data
    • AREF - analog reference voltage (~1 VDC)
    • GND - ground (0 VDC)
    • digital pins 13 .. 8

  • second header strip
    • digital pins 7 .. 0

Two more header strips, located near the bottom edge of the Uno, contain (respectively) the Power and Analog In pins:

  • first header strip ("Power")
    • unused
    • IOREF - CPU reference voltage
    • RESET - bring LOW to reset
    • 3.3V - regulated 3.3 VDC
    • 5V - regulated 5 VDC
    • GND - ground pin
    • GND - ground pin
    • VIN - input voltage (7-20 VDC)

  • second header strip ("Analog In")
    • A0 .. A5

Usage Table

Set Pin Functions Int. Port
Analog A0 ADC0 8 PC0
Analog A1 ADC1 9 PC1
Analog A2 ADC2 10 PC2
Analog A3 ADC3 11 PC3
Analog A4 ADC4, SDA 12 PC4
Analog A5 ADC5, SCL 13 PC5
         
Digital 0 RXD 26 PD0
Digital 1 TXD 17 PD1
Digital 2 INT0 18 PD2
Digital 3 INT1, OC2B, PWM 19 PD3
Digital 4 T0, XCK 20 PD4
Digital 5 OC0B, PWM, T1 21 PD5
Digital 6 AIN0, OC0A, PWM 22 PD6
Digital 7 AIN1 23 PD7
Digital 8 CLKO, ICP1 0 PB0
Digital 9 OC1A, PWM 1 PB1
Digital 10 OC1B, PWM, SS 2 PB2
Digital 11 MOSI, OC2A, PWM 3 PB3
Digital 12 MISO 4 PB4
Digital 13 SCK 5 PB5
         
Power GND ground (0 VDC) _ _
Power VIN input voltage _ _
Power 3.3V 3.3 VDC _ _
Power 5V 5 VDC _ _
         
_ AREF AREF _ _
_ IOREF IOREF _ _
_ RESET RESET _ PC6
_ _ TOSC1, XTAL1 7 PB7
_ _ TOSC2, XTAL2 6 PB6

Discussion

Analog Input

The Uno has six input pins for low-speed analog signals; each of these is connected to an ADC. In addition, digital 6 & 7 can be used together to compare a pair of analog levels:

The Analog Comparator compares the input values on the positive pin AIN0 and negative pin AIN1. When the voltage on the positive pin AIN0 is higher than the voltage on the negative pin AIN1, the Analog Comparator output, ACO, is set. The comparator’s output can be set to trigger the Timer/Counter1 Input Capture function. In addition, the comparator can trigger a separate interrupt, exclusive to the Analog Comparator.

  • ADCx - ADC Input Channel x
  • AIN0 - Analog Comparator Positive Input
  • AIN1 - Analog Comparator Negative Input
  • AREF - ADC Analog Reference

Interrupts

Interrupts can be triggered in a number of ways. The INTx pins have dedicated interrupt vectors. The PCINTx (pin change interrupt) pins share a single vector and must poll the pins to determine the interrupt's exact cause. Interrupts can also be triggered by activities of the ADCs, SPI, timers, USART, etc.

  • INTx - External Interrupt x
  • PCINTx - External Interrupt x

Oscillators

  • TOSCx - Timer Oscillator x
  • XTALx - Chip Clock Oscillator x

Power

  • 3.3V - 3.3 VDC supply
  • 5V - 5 VDC supply
  • GND - Ground
  • VCC - IC power-supply pin
  • VIN - Voltage input

Pulse-width Modulation

Several of the digital I/O pins can support pulse-width modulation (PWM). Basically, the pins emit an alternating sequence of HIGH and LOW logic levels; the amount of time spent in each level is controlled by an internal timer.

PWM is commonly used to generate analog signals, using a low-pass filter. The digital signal is fed (through a resistor) into a capacitor. Time spent in the HIGH state charges (i.e., increases the voltage in) the capacitor; time spent in the LOW state discharges it. The values of the capacitor and resistor determine how quickly the voltage changes.

SPI Bus

The Serial Peripheral Interface (SPI) Bus is used for short distance communication, primarily in embedded systems. It supports full-duplex, synchronous, serial communication. Each SPI slave uses four wires; in a multi-slave configuration, the SPI master may need to generate multiple SS signals:

  • MISO - Master Input / Slave Output
  • MOSI - Master Output / Slave Input
  • SCK - Master Clock Input
  • SS - Master Slave Select (inverted)

Timer / Counter

  • OCxy - T/C x Output Compare Match y Output
  • Tx - T/C x External Counter Input

OC0x are used by the Arduino's internal clock, so we can't use its 8-bit counter / timer. OC1x are used by the 16-bit counter / timer. OC2x are used by another 8-bit counter / timer.

Two-wire Serial Bus

The Arduino supports the Inter-Integrated Circuit (I²C) bus, a 2-wire, multi-master, multi-slave, single-ended, serial computer bus.

  • SCL - Clock Line
  • SDA - Data Input / Output Line

USART

The Uno has a built-in Universal Synchronous/Asynchronous Receiver/Transmitter (USART). This is most commonly used to support the built-in Universal Serial Bus (USB) interface. However, it can also be used directly (via the RXD and TXD pins) to support variations (e.g., 5V, inverted) on RS-232.

  • RXD - Input Pin: Receive Data
  • TXD - Output Pin: Transmit Data
  • XCK - External Clock Input / Output

Resources


This wiki page is maintained by Rich Morin, an independent consultant specializing in software design, development, and documentation. Please feel free to email comments, inquiries, suggestions, etc!

This topic: Projects/Access/Utiles/AR > UP
Topic revision: 11 Feb 2016, RichMorin
This site is powered by Foswiki Copyright © by the contributing authors. All material on this wiki is the property of the contributing authors.
Foswiki version v2.1.6, Release Foswiki-2.1.6, Plugin API version 2.4
Ideas, requests, problems regarding CFCL Wiki? Send us email