Projeto ESP32 com Display 16x2 Fundo Azul - Blog Usinainfo
por	Gustavo Teixeira	09/07/2019	4465	Visualizações
Adicionar em um Projeto ESP32 um Display torna a visibilidade de dados muito mais interessante. Nesse tutorial, demonstraremos como conectar um display de 16×2 em uma ESP32. Utilizaremos também um adaptador I2C, que diminui consideravelmente a quantidade de jumpers utilizados.
Esse display nos permite utilizar duas linhas e 16 colunas. Podemos nos localizar nele com a lógica de coordenadas x e y. Ainda nisso, cada coordenada (x, y) ainda possui uma malha de 5×8 bits, os quais são acionados ou desligados de maneira a formarem um caractere. Eles também podem ser utilizados para criar outros caracteres personalizados.
O adaptador I2C nos fornece uma conexão muito rápida e eficiente com a ESP32. Ele é, sem dúvidas, indispensável para que o projeto não fique cheio de fios. Pode-se também conectar outros módulos I2C com outros displays caso seja necessário.
Abaixo confira na lista os materiais que iremos utilizar no Projeto ESP32 com Display.
Módulo Adaptador I2C
Para dar sequência ao projeto esp32 utilizaremos a biblioteca que está hospedada no GitHub. Você pode acessá-la através deste link.
Faça o download, extraia seus arquivos e cole na pasta libraries, do Arduino. Normalmente essa pasta se localiza em "C:\Users\<user>\Documents\Arduino\libraries". Renomeie ela para "LiquidCrystal_I2C". Feito isso, inicie a IDE do Arduino.
A conexão da ESP32 com o adaptador I2C utiliza apenas 4 fios no Projeto ESP32 com Display. Para uma melhor utilização, é recomendável soldar o adaptador no display 16×2. Na figura abaixo, utilizei fios apenas para fins de ilustração. O fio vermelho indica a conexão do módulo com o pino de 5V (Vin) da ESP. O fio preto indica o GND. O fio verde (SDA) está ligado na GPIO 21 e o fio laranja está ligado na GPIO 22.
Esquema de Ligação do Display I2C 16×2 com ESP32
Código Projeto ESP32 com Display
Não se esqueça de pressionar o botão Io0 ao enviar o código para o ESP32!
#include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2); void setup() { lcd.begin(); lcd.backlight(); lcd.print("ESP32 - Projeto"); lcd.setCursor(0, 1); lcd.print("com display!"); } void loop() {}
lcd.print("ESP32 - Projeto");
lcd.print("com display!");
Nesse código, além de incluirmos a biblioteca que acabamos de instalar, LiquidCrystal_I2C, também incluímos a biblioteca Wire. Ela é necessária para que sejam utilizadas rotinas de comunicação I2C.
Em seguida, criamos uma objeto lcd que recebe como parâmetros o endereço I2C em hexadecimal, 0x27, e o número de colunas e linhas do display. No nosso caso, utilizamos o display de 16×2.
Para inicializar o display, usamos a função .begin().
Em seguida, para ativar a iluminação, usamos a função .backlight(). Caso você queira desligá-la, pode usar a função .noBacklight().
Para escrever um caractere, basta utilizar a função .print("texto"). Isso escreve um caracter na primeira linha e primeira coluna do display. Para escrever em uma coordenada diferente, basta utilizar a função .setCursor(coluna, linha) imediatamente antes de usar o .print(). Se você quiser escrever uma variável no display, basta utilizar a função .print(variável), sem as aspas.
Na próxima seção, implementamos um pequeno cronômetro de 1 minuto para demonstrar como atualizar valores no display.
Projeto Esp32 Display – Cronômetro
Nesse código fizemos uma variável t, representando o tempo desejado para o cronômetro, e um laço for. Nele, é atualizado o valor do tempo a cada segundo que passa.
#include <Wire.h? #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2); int t= 20; void setup() { lcd.begin(); lcd.backlight(); for (int i = 0; i <= t; i++) { lcd.clear(); lcd.print("Cronometro"); lcd.setCursor(0, 1); lcd.print("Tempo: "); lcd.setCursor(7, 1); lcd.print(i); delay(1000); } lcd.clear(); lcd.print("Fim!"); } void loop() {}
int t= 20;
lcd.print("Fim!");
Nesse código utilizamos também a função .clear(). Note, porém, que tivemos que reescrever o texto toda vez que o laço for era executado. Isso acontece por que o .clear() apaga todos os caracteres da tela, sem fazer distinção. Dessa maneira, é possível escrever valores que variam com o tempo. Confira no gif abaixo como ficou o projeto!
Nesse tutorial ESP32 demonstramos como conectar o display 16×2 a um ESP32 com o módulo I2C por meio do Projeto ESP32 com Display. Verificamos como utilizar a biblioteca LiquidCrystal_I2C para mostrar textos e valores no display. Vimos também como atualizar valores de acordo com o tempo. Com isso já é possível implementar diversos outros projetos maiores que requeiram as funções que foram usadas nesse tutorial.
Conheça toda Linha ESP32 no Site da UsinaInfo, Acesse Agora!
por	Gustavo Teixeira	- jun 19, 2019
22 julho 2020	at 09:56
Amigo, perfeito seu tutorial, porém tem um erro no seu esquemático… O fio laranja está ligado na GPIO 23 de acordo com o desenho do esquema, mas realmente, conforme o codigo, ele tem que ser ligado no 22…
29 julho 2020	at 11:31
Bom Dia Tiago! Realmente estava com problema no esquema de ligação, verifiquei e já corrigi, muito obrigado!
9 outubro 2020	at 20:32
Eu tentei fazer o exercício acima, mas o IDE Arduino, não reconhece a placa, pensei que meu ESP32 estava com problema então adquiri outro e continua mesmo jeito. Poderia me ajudar?
13 outubro 2020	at 17:21
Boa Tarde João! Estranho isto estar acontecendo, você seguiu todos os passos que indicamos em nosso artigo "SP32 TUTORIAL COM PRIMEIROS PASSOS"? Vou encaminhar o link para dar uma olhada: https://www.usinainfo.com.br/blog/esp32-tutorial-com-primeiros-passos/