Arduino

arduino uno

Arduino Uno

The Arduino Uno is an open-source micro-controller board based on the Microchip ATmega328P micro-controller (MCU) and developed by Arduino.cc and initially released in 2010. The micro-controller board is equipped with sets of digital and analog input/output (I/O) pins that may be interfaced to various expansion boards (shields) and other circuits. The board has 14 digital I/O pins (six capable of PWM output), 6 analog I/O pins, and is programmable with the Arduino IDE (Integrated Development Environment), via a type B USB cable. It can be powered by a USB cable or a barrel connector that accepts voltages between 7 and 20 volts, such as a rectangular 9-volt battery. The hardware reference design is distributed under a Creative Commons Attribution Share-Alike 2.5 license and is available on the Arduino website. Layout and production files for some versions of the hardware are also available.

The word “uno” means “one” in Italian and was chosen to mark a major redesign of the Arduino hardware and software. The Uno board was the successor of the Duemilanove release and was the 9th version in a series of USB-based Arduino boards. The ATmega328 on the board comes preprogrammed with a bootloader that allows uploading new code to it without the use of an external hardware programmer.

While the Uno communicates using the original STK500 protocol, it differs from all preceding boards in that it does not use a FTDI USB-to-UART serial chip. Instead, it uses the Atmega16U2 (Atmega8U2 up to version R2) programmed as a USB-to-serial converter.

History

Arduino RS232 Serial board – a predecessor with an ATmega8

The Arduino project started at the Interaction Design Institute Ivrea (IDII) in Ivrea, Italy. At that time, the students used a BASIC Stamp micro-controller, at a cost that was a considerable expense for many students. In 2003, Hernando Barragán created the development platform Wiring as a Master’s thesis project at IDII, under the supervision of Massimo Banzi and Casey Reas, who are known for work on the Processing language. The project goal was to create simple, low-cost tools for creating digital projects by non-engineers. The Wiring platform consisted of a printed circuit board (PCB) with an ATmega168 microcontroller, an IDE based on Processing, and library functions to easily program the micro-controller. In 2003, Massimo Banzi, with David Mellis, another IDII student, and David Cuartielles, added support for the cheaper ATmega8 micro-controller to Wiring. But instead of continuing the wiring, they forked the project and renamed it Arduino. Early arduino boards used the FTDI USB-to-UART serial chip and an ATmega168. The Uno differed from all preceding boards by featuring the ATmega328P microcontroller and an ATmega16U2 (Atmega8U2 up to version R2) programmed as a USB-to-serial converter.

In June 2023, Arduino released two new flavors of the Uno: R4 Minima and R4 Wi-Fi. These mark a departure from earlier boards as they use Renesas RA4M1 ARM Cortex M4 micro-controller, and the R4 Wi-Fi a Espressif ESP32-S3-MINI co-processor. These versions are form factor, pin and power compatible with version R1 to R3, so should largely be able to be drop in replacements.

Technical specifications

Arduino Uno R3 board with ATmega328P MCU in DIP-28 package.

Uno R1 to R3

  • Micro-controller (MCU):
  • IC: Microchip ATmega328P (8-bit AVR core)
  • Clock Speed: 16 MHz on Uno board, though IC is capable of 20 MHz maximum at 5 Volts.
  • Flash Memory: 32 KB, of which 0.5 KB used by the boot loader.
  • SRAM: 2 KB
  • EEPROM: 1 KB
  • USART peripherals: 1 (Arduino software default configures USART as an 8N1 UART)
  • SPI peripherals: 1
  • I²C peripherals: 1
  • Operating Voltage: 5 Volts
  • Digital I/O Pins: 14
  • PWM Pins: 6 (Pin # 3, 5, 6, 9, 10 and 11)[13]
  • Analog Input Pins: 6
  • DC Current per I/O Pin: 20 mA
  • DC Current for 3.3V Pin: 50 mA
  • Size: 68.6 mm x 53.4 mm
  • Weight: 25 g
  • ICSP Header: Yes

Power Sources:

  • USB connector. USB bus specification has a voltage range of 4.75 to 5.25 volts. The official Uno boards have a USB-B connector, but 3rd party boards may have a mini USB / micro USB / USB-C connector.
  • 5.5 mm/2.1 mm barrel jack connector. Official Uno boards support 6 to 20 volts, though 7 to 12 volts is recommended. The maximum voltage for 3rd party Uno boards varies between board manufactures because various voltage regulators are used, each having a different maximum input rating. Power into this connector is routed through a series diode before connecting to VIN to protect against accidental reverse voltage situations.

Header pinout of the Arduino Uno board

General pin functions

LED: There is a built-in LED driven by digital pin 13. When the pin is high value, the LED is on, when the pin is low, it is off.

VIN: The input voltage to the Arduino/Genuino board when it is using an external power source (as opposed to 5 volts from the USB connection or other regulated power source). You can supply voltage through this pin, or, if supplying voltage via the power jack, access it through this pin.

5V: This pin outputs a regulated 5V from the regulator on the board. The board can be supplied with power either from the DC power jack (7 – 20V), the USB connector (5V), or the VIN pin of the board (7-20V). Supplying voltage via the 5V or 3.3V pins bypasses the regulator and can damage the board.

3V3: A 3.3 volt supply generated by the on-board regulator. Maximum current draw is 50 mA.

GND: Ground pins.

IOREF: This pin on the Arduino/Genuino board provides the voltage reference with which the microcontroller works. A properly configured shield can read the IOREF pin voltage and select the right power source or enable voltage translators on the outputs to work with the 5V or 3.3V.

Reset: Typically used to add a reset button to shields that block the one on the board.

Special pin functions

Each of the 14 digital pins and 6 analog pins on the Uno can be used as an input or output, under software control (using pinMode(), digitalWrite(), and digitalRead() functions). They operate at 5 volts. Each pin can provide or receive 20 mA as the recommended operating condition and has an internal pull-up resistor (disconnected by default) of 20-50K ohm. A maximum of 40mA must not be exceeded on any I/O pin to avoid permanent damage to the microcontroller. The Uno has 6 analog inputs, labeled A0 through A5; each provides 10 bits of resolution (i.e. 1024 different values). By default, they measure from ground to 5 volts, though it is possible to change the upper end of the range using the AREF pin and the analogReference() function.[9]

In addition, some pins have specialized functions:

Serial / UART: pins 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: pins 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.

PWM (pulse-width modulation): pins 3, 5, 6, 9, 10, and 11. Can provide 8-bit PWM output with the analogWrite() function.

SPI (Serial Peripheral Interface): pins 10 (SS), 11 (MOSI), 12 (MISO), and 13 (SCK). These pins support SPI communication using the SPI library.

TWI (two-wire interface) / I²C: pin SDA (A4) and pin SCL (A5). Support TWI communication using the Wire library.

AREF (analog reference): Reference voltage for the analog inputs.[9]

Communication

The Arduino/Genuino Uno has several facilities for communicating with a computer, another Arduino/Genuino board, 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. Arduino Software (IDE) includes a serial monitor which allows simple textual data to be sent to and from the 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 Software Serial library allows serial communication on any of the Uno’s digital pins.[9]

Automatic (software) reset.

Rather than requiring a physical press of the reset button before an upload, the Arduino/Genuino Uno board is designed in a way that allows it to be reset by the 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.

This setup has other implications. When the Uno is connected to 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.

Arduino Due

The Arduino Due is the high-performance “powerhouse” of the original Arduino lineup. While the Arduino Uno is the gold standard for beginners and simple projects, the Due was designed for demanding tasks like high-speed data processing, complex robotics, and audio manipulation.

The most critical difference to remember: The Arduino Due operates at 3.3V, while the Uno operates at 5V. Connecting 5V sensors directly to a Due can permanently damage it.

Core Specifications Comparison

FeatureArduino Uno (R3)Arduino Due
MicrocontrollerATmega328P (8-bit)AT91SAM3X8E (32-bit ARM)
Clock Speed16 MHz84 MHz
Operating Voltage5V3.3V (Careful!)
Flash Memory32 KB512 KB
SRAM2 KB96 KB
Digital I/O Pins14 (6 PWM)54 (12 PWM)
Analog Inputs6 (10-bit resolution)12 (12-bit resolution)
Analog OutputsNone (PWM only)2 True DACs (Audio ready)
USB SupportProgramming onlyUSB OTG (Host/Device support)

Key Technical Advantages of the Due

1. 32-bit Architecture vs. 8-bit

The Uno processes data in 8-bit chunks, whereas the Due uses a 32-bit ARM Cortex-M3. This means the Due can perform operations on much larger numbers in a single clock cycle, making it significantly faster for math-heavy applications.

2. True Analog Output (DAC)

The Uno “fakes” analog output using Pulse Width Modulation (PWM). The Due features two dedicated Digital-to-Analog Converters (DAC). This allows it to output smooth, true analog voltages, which is essential for high-quality audio synthesis or precise signal generation.

3. Massive I/O and Memory

The Due shares the same “Mega” form factor, giving you 54 digital pins. However, it also has 96 KB of RAM—nearly 50 times more than the Uno. This allows you to store larger data buffers, run more complex libraries, and manage higher-resolution displays.

4. USB Host Capability

Thanks to its native USB port, the Due can act as a USB Host. This means you can plug in a USB mouse, keyboard, or even a smartphone directly into the board to control it.

Critical Warnings & Compatibility

  • Voltage Danger: Most “classic” Arduino sensors and shields are designed for 5V. If you plug a 5V sensor into a Due digital pin, you risk “frying” the chip. Always use a Logic Level Converter when interfacing with 5V components.
  • Library Support: While most standard Arduino code works on the Due, some low-level libraries written specifically for the AVR architecture (Uno/Mega) will not compile on the Due’s ARM architecture.
  • Current Limits: The pins on the Due can provide much less current (typically 3mA to 15mA) than the Uno (~20mA to 40mA). You should almost always use a transistor or relay to drive LEDs or motors.

Which one should you choose?

  • Choose the Uno if: You are a beginner, building simple automation, or using standard 5V shields and sensors.
  • Choose the Due if: You need high speed (complex math), are working with audio (DAC), need a massive amount of pins, or require USB Host functionality.

Leave a Comment

Scroll to Top