How to use I2C controller to LCD with Arduino


In this tutorial, we will see How to use I2C controller to LCD with Arduino, so basically, the I2C (Inter-Integrated Circuit) is a communication protocol that allows devices to communicate with each other using only two wires. An I2C controller is a microcontroller or IC that is capable of acting as a master device on an I2C bus. By using an I2C controller, we can reduce the number of wires needed to connect devices in a system, making it a popular choice for various applications.

One application of I2C is using it to interface an LCD (Liquid Crystal Display) with an Arduino microcontroller. With the help of an I2C controller, we can use only two wires to communicate with the LCD, reducing the complexity of the wiring and allowing for simpler and more compact designs. In this setup, the I2C controller acts as the master and the LCD as the slave device.

Hardware Required

You will require the following Hardware Components for using an I2C controller to LCD with Arduino.

Components#Buy From Amazon
Arduino UNO1Buy Now
I2C Controller Module1Buy Now
16×2 LCD Display1Buy Now
Jumper Wires4Buy Now
Breadboard1Buy Now

What is I2C controller Module?

An I2C controller is a device that helps in the communication between the microcontroller and the I2C-compatible devices. It simplifies the connection process by providing a standard interface for devices to communicate with each other. One of the most popular I2C controllers is the PCF8574, which is used for controlling LCD displays.

I2C is a popular communication protocol used to interface various devices with microcontrollers like Arduino. It allows multiple devices to be connected using only two wires, a serial data line (SDA) and a serial clock line (SCL). One of the most common applications of I2C is using an I2C controller to connect and control an LCD display with Arduino.


  1. PCF8574 I2C controller has 8-bit remote I/O ports
  2. Operating voltage: 2.5V to 6.0V
  3. Compatible with 3.3V and 5V microcontrollers
  4. Supports clock frequency up to 400 kHz
  5. Has 3 hardware address pins allowing up to 8 devices to be connected to the same bus


  1. Simplifies the connection of I2C devices with microcontrollers like Arduino
  2. Saves the number of pins required for connecting multiple devices
  3. Supports multiple devices to be connected on the same bus using unique addresses
  4. Enables long-distance communication between devices
  5. Provides a standard interface for communication between devices



Pin Configuration

Pin NamePin TypePin Description
VCCPowerVoltage Input
SDAI2C DataSerial Data
SCLI2C ClockSerial Clock

Circuit Diagram

The following circuit shows you the connection of the I2C controller to LCD with Arduino Please make the connection carefully


Circuit Connections

ArduinoI2C Module

Installing Arduino IDE Software

First, you will require to Download the updated version of Arduino IDE Software and Install it on your PC or laptop. if you Learn How to install the Arduino step-by-step guide then click on how to install Arduino Button given Blow

Installing Libraries

Now when you are Ready to upload the code, to the Arduino Board you will need first to add the Following Libraries in Arduino, If you Learn How to add the library in the Arduino step-by-step guide click on how to install the library Button given Blow

As we mentioned before, to communicate with the display controller from the Arduino board we must implement the 2-pin serial protocol called I2C. In this case, we will use the <Wire.h> and <LiquidCrystal_I2C.h> libraries to carry out the communication in a simple way and with very few lines of code.

The <LiquidCrystal_I2C.h> library is not installed by default in the Arduino IDE, so we must install it before we can compile and load code that makes use of it. If you need help carrying out the installations, consult here on the steps to follow so that you can continue with this example.


We compile and upload the code to the Arduino Uno board and observe the text displayed on the LCD 16×02 screen using I2C controller module.

//For more Projects:

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

//Create the lcd object with address 0x3F, 16 columns and 2 rows
LiquidCrystal_I2C lcd(0x3F,16,2);

void setup() {
  // We initialize the lcd object
  //Turn on the backlight.
  lcd. backlight();
  // We write a Message on the LCD screen.
  lcd.print("Hello World");

void loop() {
   // We place the cursor in the first position (column: 0) of the second line (row: 1)
  lcd.setCursor(0, 1);
   // Write the number of seconds elapsed
  lcd.print(" Seconds");

Code Explanation

LCD screens are digital output devices, that is, their operation consists of receiving instructions for the text to be displayed and displaying itIt is common to use the <LiquidCrystal.h > library to control the screen quickly and with few lines of code, however, several Arduino pins are used and it requires several power connections, which results in a tedious circuit to build. By using an I2C controller we reduce the number of connections and pins to use in the Arduino, the communication between the Arduino and the LCD Screen is done through the 2 I2C communication pins and thus the circuit becomes quite simple. For the programming code to remain short we will use the external libraries<Wire.h> and <LiquidCrystal_I2C.h >.


  1. LCD displays: I2C controllers like PCF8574 are used for connecting and controlling LCD displays with Arduino and other microcontrollers.
  2. Sensors: I2C controllers are used for interfacing various sensors like temperature sensors, humidity sensors, and pressure sensors with Arduino.
  3. EEPROM: I2C controllers are used for interfacing EEPROM (Electrically Erasable Programmable Read-Only Memory) with Arduino for data storage.
  4. Motor controllers: I2C controllers are used for interfacing motor controllers with Arduino for controlling the speed and direction of motors.


I2C controllers simplify the process of connecting and communicating with various devices using the I2C protocol. They provide a standard interface for communication and reduce the number of pins required for connecting multiple devices. PCF8574 is a popular I2C controller used for controlling LCD displays with Arduino.

Leave a Comment