Serial Communication in Arduino Uno

In this tutorial, we will explore the use of Serial Communication in Arduino Uno. Arduino has built-in support for UART which enable serial communication. UART as a serial protocol is most useful and famous protocol. The Arduino can transmit and receive data to the PC over USB Cable. This comes handy when we want to send the sensor data from microcontroller to PC.  The Arduino IDE has built-in Serial Monitor window, which displays the data sent from Arduino to PC. The same way we can send data/command from Serial Monitor to Arduino. The serial communication enables us to control electronic devices connected to Arduino board from PC. When comes to interfacing more complicated devices such as LCD, RTC, EEPROM etc. We can use serial communication to debug the code and track errors to interface those devices.

learn-embedded-system

Example Program 1: In this example, we will send a string from Arduino to PC. Once we upload the sketch into Arduino. We will see this string will be printing on Serial Monitor Window of Arduino IDE.

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  Serial.println("Hello from Umesh");
  delay(1000);
}
Hardware Setup: We only need to connect Arduino Uno to PC over standard USB Cable. Once we have done connection we are ready to upload the sketch to Arduino and open serial monitor window to display data sent from Arduino. As we been transmitting string from Arduino to PC. We will observe that LED connected to TX Pin on Arduino will light up.
Open Serial Monitor of Arduino IDE
Open Serial Monitor of Arduino IDE
Serial Monitor of Arduino Printing String
Serial Monitor of Arduino Printing String

Example Program 2: In this example, we will transmit as well as receive data using Arduino. This program receives data from PC and then send it back to PC. This way we can perform transmit and receive data using Arduino board.

int inByte; // Stores incoming command 

void setup()
{
  Serial.begin(9600);
  pinMode(13, OUTPUT); // Led pin
  Serial.println("Type 1: LED ON, 0: LED OFF "); // Ready to receive commands
}

void loop()
{
  if (Serial.available() > 0)
  { // A byte is ready to receive
    inByte = Serial.read();
    if (inByte == '1') { // byte is '1'
      digitalWrite(13, HIGH);
      Serial.println("LED - On");
    } else { // byte isn't '1'
      digitalWrite(13, LOW);
      Serial.println("LED - off");
    }
  }
}

Now just verify and upload the sketch to Arduino and open up Serial Monitor. We are ready to control LED connected PIN 13 of Arduino. Now just enter ‘1’ and press Send button. We will see on board orange LED will turn ON. When we enter ‘0’ and hit Send button LED will turn OFF. This is how we can control devices connected to Arduino using a serial interface.

Now you might be thinking what if we need more serial ports in our project. In that case, we will use Software Serial Library. Also, SoftwareSerial will be used when we want to connect via serial communication on some other digital pins of Arduino. It allows our program to emulate serial input/output in software instead of dedicated hardware pins.

Software Serial Example: In this example, we’ll be using PIN 10 and 11 as Rx, Tx respectively. Whereas Pin No. 0 and 1 which are default serial pins on Arduino hardware.

#include <SoftwareSerial.h> /* Connect device Rx - 10, Tx - 11 */

SoftwareSerial mySerial(10, 11);

void setup()
{
  Serial.begin(9600); // Open serial communications and wait for port to open:
  mySerial.begin(4800); // set the data rate for the SoftwareSerial port
}

void loop()
{
  Serial.println("HELLO"); // Sends string to PC to Serial Monitor
  mySerial.println("HELLO"); // Sends string to device
  delay(1000); // Waits here 1000ms and then goes on
}

This is how Serial Communication in Arduino works. We hope this tutorial will help you to understand serial communication. There will be several projects where we will use this feature serial UART in Arduino to debug the code. We recommend you to play around code and see how it works. If you have any suggestions, feel free to leave a comment. Thanks.

Get Free Courses & Webinars
You'll receive only high quality learning material, tips & tricks
I agree to have my personal information transfered to MailChimp ( more information )
We respect your privacy

About Umesh Lokhande

Umesh Lokhande holds a Master degree in Scientific Instrumentation from University of Applied Sciences Jena, Germany. and has previously worked at Orbotech, Alere Technologies etc. Umesh is also a founder and first author of BINARYUPDATES.COM

Login

Register | Lost your password?