top of page

Interfacing an I2C LCD with Arduino UNO

If you’re searching for a display that uses fewer pins to communicate with the microcontroller, then this is for you.


If you’re searching for a display that uses fewer pins to communicate with the microcontroller then this tutorial is for you. Because In this tutorial, we are going to interface ” I2C LCD with Arduino UNO”. I2C LCD only requires two pins for the interfacing. An LCD comprises the adapter and a display. Usually, the LCD is utilized to display the characters. Further, the 16*2 display LCD has a backlight, allowing 32 ASCII characters to display. This display has two rows so each row can print 16 characters. The LCD also contains the adapter. Hence the adapter is an 8-bit chip. The adapter is there to convert the I2C data coming from an Arduino into the parallel data that is the need of LCD.

The LCD board has a little potentiometer in blue color to adjust the contrast of the display. Moreover, the jumper is also there to supply power to the backlight Hence the jumper can be removed and an external voltage can be applied to the header pin to control the intensity of the backlight. The LCD has four pins. GND, VCC, SDA, and SCL. SDA is the serial data pin used t transmit and receive data and SCL is the Serial clock pin

Hardware Required

Sr. No.            Components             Quantity
  1                 Arduino UNO                1
  2             USB Cable Type A to B          1
  3               Jumper wires                 -
  4                  12C LCD                   1

Circuit Diagram

Connection Table

Arduino                    12C LCD
GND                          GND
5V                           VCC
A4                           SDA
A5                           SCL

Arduino Code

#include <Wire.h>

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

  // Leonardo: wait for serial port to connect
  while (!Serial) 

  Serial.println ();
  Serial.println ("I2C scanner. Scanning ...");
  byte count = 0;
  for (byte i = 8; i < 120; i++)
    Wire.beginTransmission (i);
    if (Wire.endTransmission () == 0)
      Serial.print ("Found address: ");
      Serial.print (i, DEC);
      Serial.print (" (0x");
      Serial.print (i, HEX);
      Serial.println (")");
      delay (1);  // maybe unneeded?
      } // end of good response
  } // end of for loop
  Serial.println ("Done.");
  Serial.print ("Found ");
  Serial.print (count, DEC);
  Serial.println (" device(s).");
}  // end of setup

void loop() {}

Working Explaination

To interface the I2C LCD with Arduino UNO connect the circuit according to the diagram given above. Write the above-mentioned code of determining the 12C address in your Arduino IDE and upload the code in Arduino UNO. Open the serial monitor and wait until the device is found. After that write the other code to print the message on LCD and upload it too in Arduino. The message will be displayed on the 12c LCD.

Code Explaination


  • Download the liquidCrystal_12C library. You can download the library from:

  • Include the downloaded library. and enter the address of your 12C LCD. using LCD( ).

  • In the void setup, initialize the LCD by LCD.init( ). Clear the LCD by LCD.clear. And then turn ON the backlight by using LCD.backlight( ). To print the message, first set the cursor by using LCD. setCursor( A,B). Write the character number of characters at the place of A and line number at the place of B. print the message by using LCD.print( ).

Power in Numbers




Project Gallery

bottom of page