The Arduino Uno is an 8-bit microcontroller board based on the ATmega328 chip (see the datasheet). It has 14 digital input/output pins (6 of these can also utilize the ADC onboard for PWM), 6 analog inputs, a 16 MHz ceramic resonator, a USB Type-B connector, a DC Barrel jack for power, an ICSP header and a reset button on board! It contains everything needed to support the microcontroller; all you’ll need to do to get started is simply connect it to a computer with a USB cable or power it with a wall wart adapter and the barrel jack or with a battery and the Vin pins.
The Uno is an entirely different board to the previous Duemilanove in that it got rid of the onboard FTDI USB-to-serial driver chip in favor of the Atmega16U2 (Atmega8U2 up to version R2) programmed as a USB-to-serial converter.
Revision 2 of the Uno board made a change to make it easier to put the board into DFU mode.
Revision 3 of the board made a few more changes including:
- 1.0 pinout: Added 2 Pins near the AREF pin for I2C, and an additional two pins near the RESET pin. The first of these pins is the IOREF pin that allows SHIELDS to adapt their Voltage to the board.
- Stronger RESET circuit.
- The ATmega16U2 replaced the ATmega8U2.
"Uno" means one in Italian and is this board was named as such to mark the then upcoming release of The Arduino IDE 1.0. The Uno and version 1.0 are the current reference versions of Arduino. The Uno is the easily the most popular Arduino Board, being featured in almost every microcontroller beginner kit with Arduino products in them.
There are 4 different methods you can use to power your Arduino, they include:
- USB (5V) - The Uno will use any 5V power supply with a USB Type B connector. Total current drawn will be limited by the supply, most PCs only provide 250-500mA so bear that in mind if you are looking to power your project directly from a PC.
- 2.1mm Centre-Positive Barrel Jack (Regulates Voltage from 7-12V DC) - The Uno will use any 7-12V source here, as long as it is connected center positive and is 7-12V DC.
- Vin Pin/GND Pin on Power Header on board - This pin can either be a power input (7-12V DC) or to drawn power directly from the barrel jack supply.
- 5V Power Pin on Power Header on Board - This pin can either be used as a 5V output pin or to supply 5V.
When powering the circuit via multiple methods, the 7-12V supply options will take preference over the 5V, and the 5V will be used for data transfer.
The ATmega328 controller chip contains 32 KB of memory (0.5 KB of this is reserved for the bootloader). It also has 2 KB of Static RAM and 1 KB of EEPROM.
Input and Output
Each of the 14 digital pins on the Uno uses 5V logic. Each pin can provide or receive a maximum of 40 mA and has an internal pull-up resistor (disconnected by default) of 20-50 kOhms. Control of the nature of each pin takes place within the IDE.
Some of the IO pins have extra functionality:
- Serial: 0 (RX) and 1 (TX). Used to receive (RX) and transmit (TX) TTL serial data. These pins are connected to the corresponding pins of the ATmega8U2 USB-to-TTL Serial chip.
- External Interrupts: 2 and 3. These pins can be configured to trigger an interrupt on a low value, a rising or falling edge, or a change in value. See the attachInterrupt() function for details.
- PWM: 3, 5, 6, 9, 10, and 11. Provide 8-bit PWM output with the analogWrite() function.
- SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). These pins support SPI communication using the SPI library.
- LED: 13. There is a built-in LED connected to digital pin 13. When the pin is HIGH value, the LED is on, when the pin is LOW, it's off. The Uno has 6 analog inputs, labeled A0 through A5, each of which provides 10 bits of resolution (i.e. 1024 different values). By default they measure from ground to 5 volts, though is it possible to change the upper end of their range using the AREF pin and the analogReference() function. Additionally, some pins have specialized functionality:
- TWI: A4 or SDA pin and A5 or SCL pin. Support TWI communication using the Wire library. There are a couple of other pins on the board:
- AREF. The reference voltage for the analog inputs. Used with analogReference().
- Reset. Bring this line LOW to reset the microcontroller. Typically used to add a reset button to shields which block the one on the board.
The Arduino Uno has a number of facilities for communicating with a computer, another Arduino, or other microcontrollers. The ATmega328 provides UART TTL (5V) serial communication, which is available on digital pins 0 (RX) and 1 (TX). An ATmega16U2 on the board channels this serial communication over USB and appears as a virtual com port to software on the computer. The '16U2 firmware uses the standard USB COM drivers, and no external driver is needed. However, on Windows, a .inf file is required. The Arduino software includes a serial monitor which allows simple textual data to be sent to and from the Arduino board. The RX and TX LEDs on the board will flash when data is being transmitted via the USB-to-serial chip and USB connection to the computer (but not for serial communication on pins 0 and 1).
A SoftwareSerial library allows for serial communication on any of the Uno's digital pins.
The ATmega328 also supports I2C (TWI) and SPI communication. The Arduino software includes a Wire library to simplify the use of the I2C bus; For SPI communication, use the SPI library.
The Arduino Uno can be programmed with the Arduino software (download). Select "Arduino Uno from the Tools > Board menu (according to the microcontroller on your board
The ATmega328 on the Arduino Uno comes burned with a bootloader that allows you to upload new code to it without the use of an external hardware programmer. It communicates using the original STK500 protocol.
You can also bypass the bootloader and program the microcontroller through the ICSP (In-Circuit Serial Programming) header using Arduino ISP or similar.
The ATmega16U2 (or 8U2 in the rev1 and rev2 boards) firmware source code is available. The ATmega16U2/8U2 is loaded with a DFU bootloader, which can be activated by:
- On Rev1 boards: connecting the solder jumper on the back of the board (near the map of Italy) and then resetting the 8U2.
- On Rev2 or later boards: there is a resistor that pulling the 8U2/16U2 HWB line to ground, making it easier to put into DFU mode.
You can then use Atmel's FLIP software (Windows) or the DFU programmer (Mac OS X and Linux) to load a new firmware. Or you can use the ISP header with an external programmer (overwriting the DFU bootloader).
Automatic (Software) Reset
Rather than requiring a physical press of the reset button before an upload, the Arduino Uno is designed in a way that allows it to be reset by software running on a connected computer. One of the hardware flow control lines (DTR) of the ATmega8U2/16U2 is connected to the reset line of the ATmega328 via a 100 nano-farad capacitor. When this line is asserted (taken low), the reset line drops long enough to reset the chip. The Arduino software uses this capability to allow you to upload code by simply pressing the upload button in the Arduino environment. This means that the bootloader can have a shorter timeout, as the lowering of DTR can be well-coordinated with the start of the upload.
This setup has other implications. When the Uno is connected to either a computer running Mac OS X or Linux, it resets each time a connection is made to it from software (via USB). For the following half-second or so, the bootloader is running on the Uno. While it is programmed to ignore malformed data (i.e. anything besides an upload of new code), it will intercept the first few bytes of data sent to the board after a connection is opened. If a sketch running on the board receives one-time configuration or other data when it first starts, makes sure that the software with which it communicates waits for a second after opening the connection and before sending this data.
The Uno contains a trace that can be cut to disable the auto-reset. The pads on either side of the trace can be soldered together to re-enable it. It's labeled "RESET-EN". You may also be able to disable the auto-reset by connecting an 110-ohm resistor from 5V to the reset line.
USB Overcurrent Protection
The Arduino Uno has a resettable poly fuse that protects your computer's USB ports from shorts and overcurrent. Although most computers provide their own internal protection, the fuse provides an extra layer of protection. If more than 500 mA is applied to the USB port, the fuse will automatically break the connection until the short or overload is removed.
The maximum length and width of the Uno PCB are 2.7 and 2.1 inches respectively, with the USB connector and power jack extending beyond the former dimension. Four screw holes allow the board to be attached to a surface or case. Note that the distance between digital pins 7 and 8 is 160 mil (0.16"), not an even multiple of the 100 mil spacing of the other pins.
This product is listed in:
Documentation and Resources:
- Arduino Workshop for Beginners
Welcome to the Arduino Workshop, where you'll be able to follow our guided course which covers everything you'll need to know in order to create your own Arduino projects and become a leveled up maker. My name is Sam and along with being a maker my...
- Laser Cut High Rise Case for the Arduino Uno
If you put a shield on top of an Arduino Uno there aren’t very many options available to protect it all inside a case. You can always make one yourself though, so that’s exactly what we did! This “High Rise” case for the Ardui...
- How to Build an Arduino Library
Have you ever wanted to simplify or automate a task using an Arduino? Yes? Well, have you ever wanted to simplify the code required for that task into a neat collection of easy-to-use functions? Also yes? Then this tutorial is for you! In this tutori...
- How to use GPS with Arduino - Parse and Log NMEA Sentences
Now that we've investigated and explained how How GPS Receivers work we can apply that understanding to some real-world applications of of the ideas. To start, we can use any GPS receiver, an Arduino Uno and some male-to-female Jumper cables. We...
- Switches, Debouncing and the Arduino
When we boil it down, everyday interactions with electronics are usually limited to controlling stuff with switches. Whether it be turning on the lights, switching on your laptop or turning on the kettle, all examples of how a physical switch works...
- Infrared Sensing, Hardware Interrupts, and the Arduino
Infrared (IR) is a great way of using non-visible light to control electronics, and there are a bunch of modules that we can use with our Arduino. However, what do we mean when we are talking about infrared and electronics? Well, IR remotes that cont...
- IoT Pet Feeder
The objective of this project was to create an Internet of Things (IoT) device that could give pet access to a food bowl when a text message command was sent from a remote location. I had never done an IoT project before, so I wanted to keep the rest of the build relatively simple. I decided on a box with a sliding lid on top, into which a bowl of pet food could be placed. When the user wished for their pet to be fed, they would...
- GraviTrack Enhancements - Lights and Sound
Introduction Searching for solar panels and related items on the Core Electronics website; I came across the Solarbotics GraviTrack Marble Machine Kit. I thought the kit would be a good educational tool for the grandkids. The kit was a hit, but the power switch was hard to access at the back of the machine and it only turned on and off. I had been experimenting with programmable RGB LEDs, Piezo speakers and a Light dependent re...
- Automatic Bike Indicators
This project uses an Accelerometer to detect when you are leaning left or right. Depending on if/where you are leaning, it will flash LEDs on the right or left of the bike's rear. Powered by an Arduino and a 12v battery pack (my case 8 AA Batteries). I have made a video on it below. Here is the code you'll need to build your own....
Tabot is a robotic tablet dispenser. It is designed to help elderly people maintain their independence and help anyone who has tablets remember to take them on time.
- The Hipster Coaster
We wanted to make a interactive display of the fun that can be had with DIY projects to take to Sydney Mini Maker Faire. We decided to do so by utilising the TinkerKit Braccio from Arduino.org, alongside some 3D Printing ingenuity, for an engaging display for all ages. Enter the Hipster Coaster in all its glory. All the parts were printed seperately on our family of Lulzbot 3D Printers, later stuck together using a mi...
Exact shipping can be calculated on the view cart page (no login required).
We deliver Australia-wide with these options:
- $3 for Small Items (3-7 days, not tracked, only available on selected small items)
- $6.95 for Standard Post (2-4 days, tracked)
- $9.95 for Express Post (Overnight for most of Australia, 2+ days for rural, tracked)
- Pickup - Free! Only available to customers who live in the Newcastle region (only after we email you to notify your order is ready)
International Orders - the following rates are for New Zealand and will vary for other countries:
- $11.49 for Pack and Track (3+ days, tracked)
- $16.50 for Express International (2-5 days, tracked)
If you order lots of gear, the postage amount might increment based on the weight of your order.
Our physical address (here's a PDF which includes other key business details):
Unit 18, 132 Garden Grove Parade
Take a look at our customer service page if you have other questions such as "do we do purchase orders" (yes!) or "are prices GST inclusive" (yes they are!). We're here to help - get in touch with us to talk shop.