fbpx

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.

A figura mostra uma foto do display 16x2 retirada em escala real
Figura 1- Display 16×2 com módulo I2C.

MATERIAIS NECESSÁRIOS

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.

Figura 2 - Circuito para controle do Display LCD 16X02 utilizando o módulo I2C com ESP32
Figura 2 – Circuito para controle do Display LCD 16X02 utilizando o módulo I2C com ESP32

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:

A figura mostra uma captura de tela que indica o local para acessar o codigo do endereço I2C na Arduino IDE
Figura 3 – Código para verificar o endereço do módulo I2C

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.

A figura mostra uma captura indicando o endereço i2c do módulo display na Arduino IDE
Figura 4 -Endereço do módulo I2C

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.

A figura mostra uma captura de tela focada em mostrar para o usario onde se deve ir para baixar a biblioteca LiquidCrystalI2C
Figura 5 – Instalação da biblioteca LiquidCrystal I2C através do Gerenciador de Bibliotecas

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.

Video 1: Exibição de mensagem no display 16×02

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.

A figura mostra uma foto que localiza o local em que se encontra o trimpot de ajuste de contrate do I2C display 16x02
Figura 6 – Trimpot para ajuste do contraste do display

Dúvidas? Deixe seu comentário

Jonas Souza

Graduando em Engenharia Elétrica. Atua no setor desenvolvimento de tutoriais para o Blog da Robótica.

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.