Como utilizar o display LCD 16×02 com módulo I2C na ESP32
O Display é um dispositivo eletrônico que permite a interação visual entre o usuário e a máquina. Usando este componente é possível enviar textos, números, símbolos, imagens ou indicar o que o microcontrolador está executado, os dados que estão sendo coletados e / ou os dados que estão sendo transmitidos.
Nos tutoriais Como utilizar o Display LCD 16×2 no Arduino e Como utilizar o display LCD 16×02 com módulo I2C no Arduino aprendemos como utilizar o display LCD 16 x 02 com módulo I2C (Figura 1) com o microcontrolador Arduino. Agora, neste tutorial, iremos aprender a realizar sua conexão com o microcontrolador ESP32.

MATERIAIS NECESSÁRIOS
- 1x Placa ESP 32;
- 1x Cabo USB compatível com ESP32/EPS8266;
- 1x Display LCD 16X02 com módulo I2C soldado;
- 1x Jumpers fêmea-fêmea
ESQUEMÁTICO DE LIGAÇÃO
Monte o circuito conforme a Figura 2 utilizando o display LCD 16×02 com módulo I2C, o ESP32 e os jumpers fêmea-fêmea.

Ao montar seu circuito, observe os seguintes pontos:
- O pino GND do módulo I2C deve ser conectado ao pino GND do ESP32;
- O VCC do módulo I2C deve ser conectado ao pino VIN do ESP32;
- O pino SDA do módulo I2C deve ser conectado ao pino D21 (GPIO 21) do ESP32;
- O pino SCL do módulo I2C deve ser conectado ao pino D22 (GPIO 22) da ESP32.
CONHECENDO O ENDEREÇO DO MÓDULO I2C CONECTADO AO DISPLAY
Para aprender como programar a placa ESP32 no Arduino IDE clique aqui!
O endereço do módulo I2C conectado ao display podemos executar um código exemplo da biblioteca Wire.h. Para tal, abra o Arduino IDE e acesse o exemplo pelo seguinte caminho: Arquivo > Exemplos > Wire > i2c_scanner, conforme a Figura 3:

Realize o upload do código para o Arduino e abra o monitor serial. O código realizará o escaneamento do endereço do módulo I2C e retornará seu valor na segunda linha exibida no monitor serial, conforme pode ser verificado na Figura 4.

ELABORANDO O CÓDIGO
Após a montagem do circuito e de posse da informação de endereço do módulo I2C, vamos a programação. A proposta deste projeto é utilizar o display 16 x 2 com módulo I2C com o microcontrolador ESP32 para exibir as mensagens:
“BLOG DA ROBOTICA”
“TUTORIAL DISPLAY”
Para fazer a comunicação do modulo I2C o Arduino, vamos utilizar a biblioteca Wire.h que já se encontra instalada com o Arduino IDE. Para incluí-la ao sketch acesse o seguinte caminho: Sketch>Incluir Biblioteca> Wire.
Vamos usar também a biblioteca LiquidCrystal_I2C.h que permite controlar displays I2C com funções exatamente semelhantes à biblioteca LiquidCrystal. Para instalá-la, abra o Gerenciador de Bibliotecas através do caminho: Ferramentas>Gerenciar Bibliotecas… ou por meio do atalho Ctrl+Shift+I. Em seguida, busque por LiquidCrystal I2C e clique em instalar, conforme a Figura 5.

Vamos entender a lógica de programação desse projeto a partir dos seguintes passos:
1. Incluir as bibliotecas:
Foram incluídas as bibliotecas Wire.h para fazer a comunicação com o I2C e LiquidCrystal_I2C.h para controlar displays I2C.
2. Definir as constantes:
No código definiremos 3 constantes. A constante “col” que se refere ao número de colunas utilizadas no Display, a constante “lin” que se refere ao número de linhas utilizadas no display e a constante “ende” que se refere ao endereço o qual o display se encontra, usualmente esse endereço costuma ser 0x27.
3. Criar objeto do tipo LiquidCrystal_I2C
Em seguida, criaremos o objeto lcd, do tipo LiquidCrystal_I2C, e informamos o endereço, número de colunas e linhas do display, no seguinte formato: LiquidCrystal lcd(<endereço>, <coluna>, <linha>);
4. Função setup()
No setup(), inicializaremos a exibição do display LCD usando a função init(). A função clear() será usada para limpar o buffer de exibição. A função backlight deve ser utilizada para ativar a luz de fundo do display
Para iniciar a escrita no display LCD precisamos colocar o cursor na posição na coluna 0 e linha 0. Para isso, usaremos a função lcd.setCursor(0, 0);. A partir daí, escreveremos a primeira parte do texto, que será feita a partir da função lcd.print(“BLOG DA ROBOTICA”);.
Para escrever a segunda linha do texto, posicionaremos o cursor para a posição linha 1 e coluna 0 com a função lcd.setCursor(0, 1);. Daí, escreveremos o texto com a função lcd.print(“TUTORIAL DISPLAY”);.
5. Função loop()
No loop, chamaremos a função que desliga o display lcd.noDisplay() e liga o display lcd.display();.
Desta forma, o Sketch do projeto ficará da seguinte maneira:
/* - CONTROLE DISPLAY 16X2 COM ESP32 - ================================================= === BLOG DA ROBOTICA - www.blogdarobotica.com === ================================================= Autor: Jonas Souza E-mail: contato@blogdarobotica.com Facebook: facebook.com/blogdarobotica Instagram:@blogdarobotica YouTube: youtube.com/user/blogdarobotica ================================================= === CASA DA ROBOTICA - www.casadarobotica.com === ================================================= Facebook: facebook.com/casadaroboticaoficial Instagram:@casadarobotica ================================================== */ #include <Wire.h> //Biblioteca utilizada gerenciar a comunicação entre dispositicos através do protocolo I2C #include <LiquidCrystal_I2C.h> //Biblioteca controlar display 16x2 através do I2C #define col 16 //Define o número de colunas do display utilizado #define lin 2 //Define o número de linhas do display utilizado #define ende 0x3F //Define o endereço do display LiquidCrystal_I2C lcd(ende,16,2); //Cria o objeto lcd passando como parâmetros o endereço, o nº de colunas e o nº de linhas void setup() { lcd.init(); //Inicializa a comunicação com o display já conectado lcd.clear(); //Limpa a tela do display lcd.backlight(); //Aciona a luz de fundo do display } void loop() { lcd.setCursor(0, 0); //Coloca o cursor do display na coluna 1 e linha 1 lcd.print("BLOG DA ROBOTICA"); //Exibe a mensagem na primeira linha do display lcd.setCursor(0, 1); //Coloca o cursor do display na coluna 1 e linha 2 lcd.print("TUTORIAL DISPLAY"); //Exibe a mensagem na segunda linha do display }
Após a transferência do código, o display exibirá as mensagens conforme o vídeo 1.
OBSERVAÇÃO: Caso seu display não exiba as mensagens após a transferência do código, ajuste o contraste do display.
AJUSTANDO O CONTRASTE DO DISPLAY
O módulo I2C possui um pequeno trimpot de ajuste do contraste do display, conforme Figura 6. Para aumentar o contraste do display basta girar o trimpot no sentido anti-horário. Por sua vez, para diminuir o contraste gire no sentido horário.

Graduando em Engenharia Elétrica.