Skip to main content

A UART is a Universal Asynchronous Receiver/Transmitter. This refers to the "hardware" serial port in the processor. Use this tag for questions about hardware serial.

Most Arduinos have one or more UART ports. The smaller Arduinos (such as the Uno) have one UART port. Larger Arduinos (such as the Mega2560) have multiple UART ports.

The UART takes a serial stream of bits and assembles it into a byte, effectively turning serial data into parallel data (and vice-versa for sending). Generally speaking the Arduino UARTs are used for implementing the HardwareSerial class, of which an instance called Serial (and possibly Serial1, Serial2, etc.) is available on many boards.

The UART has a send and receive buffer, so it can be sending and receiving simultaneously, while the main program code can be doing something else.

The UART can generate interrupts if desired, for events like:

  • Transmit buffer empty (so more data can be sent)
  • Receive buffer filled (so the last-received byte can be retrieved)

Some of the smaller chips (such as the ATtiny85) have a USI (Universal Serial Interface) instead of a UART.

Related tags:

Also see UART: Wikipedia