Arduino Uno R3

Arduino Uno R3
Arduino Uno R3
Images Copyright of Arduino LLC


The Arduino Uno R3 is an open source hardware computing platform. It uses the ATmega328 microcontroller. The board also incorporates the ATmega16u2 to act as a onboard USB to serial converter.

The Arduino Uno R3 can be used to develop applications that operate in a standalone or connected enviroment. The device is programmed using the Arduino integrated development enviroment (IDE).

Board Layout

Arduino Uno R3
  • ATmega328 microcontroller
  • Input Voltage between 7 - 12V
  • 14 Digital Inputs of which 6 provide a PWM (Pulse Width Modulated) Output
  • 6 Analog Pins
  • 40mA DC current per I/O pin
  • 50mA DC current for 3.3V Pin
  • 32KB Flash Memory (0.5KB used by the bootloader
  • 2KB SRAM
  • 16MHz Clock Speed

You can power the Arduino board via the USB connector or via the DC power jack. The power jack is 2.1mm center powered.

You can use between 6V and 20V DC to power the board. It is recommended that you should not go below 7V to allow for the voltage drop across the power regulator. If you go too low then the regulator output might drop below 5V and this can cause issues with the boards operation.

It is also recommended that you do not go above 12V. The power regulator may over heat and cause damage to the board.

The pins are used as follows:

  • 5V: This is a regulated output from the on board voltage regulator. This power will come from either the USB or DC input jack. This is fed into the on board 5V voltage regulator. The output from the regulator is connected to this pin. You use this pin to provide 5V to power components connected to the Arduino board. The maximum current draw is approx 400mA on usb and higher if using the DC power jack.
  • 3.3V: This is a regulated output from the on board voltage regulator. The output from the 3.3V regulator is connected to this pin. You use this pin to provide 3.3V to power components connected to the Arduino board. The maximum current draw is 50mA
  • You can power the board by connecting a regulated 5V source to the 5V pin or 3.3V to the 3.3V Pin. The power will go directly into the ATMega328 micro controller. The on board power regulators are bypassed. If something goes wrong here then you could very easily damage the ATMega328 chip. Arduino advise against powering the board this way.
  • GND: Board ground as fed from the ground pins on the DC input jack and the USB connector. Use this ground for components connected to the Arduino board.
  • VIN: This pin is connected to the input side of the on board voltage regulators. Whatever input DC is supplied to the board by the DC input jack will also appear on the VIN pin. You could also connect power to the board using this pin instead of the USB or DC input jack. Because it is connected to the input side of the voltage regulators the regulated 5V and 3.3V Dc will be supplied to the board.
  • css

There are 16 digital pins on the Arduino board. They can be used as inputs or outputs. They operate at 5V and have a maximum current draw of 40mA. They have an internal pull up resistor that is disabled by default. The pullup resistors are betwen 2 - 50kOhms and can be enabled via software.

We can control the digital I/O pins using the pinmode(), digitalWrite() and digitalRead functions.

Some of the digital I/O pins have additional functions:

  • Serial: Pin 0 (RX) and 1 (TX). These pins are used to transmit and receive serial TTL (5V) data. These pins are also connected to the Atmega16u2 USB to Serial TTL chip on the Arduino board.
  • PWM: Pins 3,5,6,9,10 and 11. The pins can provide a PWM (Pulse Width Modulated) 8 bit output. We use the analogWrite() function with a value between and 0 and 255 to control the duty cycle of the output.
  • SPI: Pin 10 (SS), 11 (MOSI), 13 (SCK) are used to provide SPI (Serial Peripheral Interface) communications using the SPI library
  • External Interrupts: Pins 2 and 3 can be configured to trigger a interrupt on the signal going low or on a rising or falling edge. We use the attachInterrupt() function to enable interrupts.
  • LED: There is a LED connected to Pin 13. When the output on pin 13 is high the LED will be turned on. The LED will be turned off when the output is low.

The Arduino Uno has 6 analog inputs that are labled A0 through to A5. Each of these Analog pins have 10 bits of resolution which translates from 0 to 1024 different values. By default they measure from ground to 5 volts. It is possible to extend the range using the AREF pin and the analogReference() function. Some of these pins have additional functionality.

  • TWI: A4 or SDA pin and A5 or SCL pin. These pins are used to support TWI communications using the Wire library.
  • AREF: Used to provide a reference voltage for the analog inputs. Used with analogReference().
  • RESET: By bringing this line LOW it will reset the ATMega328 micro controller. Can be wired to shields to provide a reset button when the reset button on the Arduino Uno is blocked by the shield.

Using Analog Pins as Digital Pins

We can configure the Analog I/O pins to function the same as Digital pins. The Analog to Digital pin mappings are as follow:

  • A0 => Digital Pin 14
  • A1 => Digital Pin 15
  • A2 => Digital Pin 16
  • A3 => Digital Pin 17
  • A4 => Digital Pin 18
  • A5 => Digital Pin 19

We can now use the pinmode command to define the pin as a INPUT or OUTPUT. So for pin AO we would use 14 as the pin value. To write to the pin we would use digitalWrite with the appropiate digital pin value as shown in the list above.

The Arduino has several modes of communications.

  • USB: The Arduino Uno uses an onboard ATmega16U2 to connect the serial TX and RX pins on the ATmega 328. The 16u2 replaces the FTTI usb chip used on other boards. This serial data is sent out by the USB chip to appear as a virtual com port on the computer connected to the USB port. The Arduino IDE Serial monitor also uses the USB port to send serial data to and from the Arduino board. The TX and RX leds will flash when data is sent and received via the USB port.
  • Serial TTL: The Arduino Uno board has a TTL level (5V) serial communications on the digital pins 0 (RX) and 1 (TX). This could also be connected to a RS232 or RS484 chip to provide serial communications to another device. Note: The onboard TX and RX leds will NOT flash when using serial comms on digital pins 0 and 1. These LEDS are USB comms only.
  • I2C and SPI communications: The Arduino Uno supports both of these serial communication formats. Use the Wire library for the I2C bus. Use the SPI library for the SPI bus.

There is a resettable polyfuse that protects the USB port from shorts and over current on the Arduino board. If more than 500mA current is pulled from the USB port it will polyfuse will trigger and break the connection to the USB power. Once the short of overcurrent is removed then the polyfuse will reset.