Projeto ESP32 com Display 16×2

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.

 

Biblioteca utilizada

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.

 

Esquemático

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 16x2 com ESP32

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!

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.

 

Funções

Para inicializar o display, usamos a função .init().

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.

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!

 

 

Conclusão

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!

Categorias
ESP32

Bacharel em Ciência da Computação pela URI – Campus de Santo Ângelo, com experiência no desenvolvimento de pesquisas em Robótica e prototipação de Sistemas Robóticos.
13 Número de Comentários
  • Tiago Magalhães
    22 julho 2020 at 09:56
    Deixe seu Comentário

    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…

    • Matheus Gebert Straub
      29 julho 2020 at 11:31
      Deixe seu Comentário

      Bom Dia Tiago! Realmente estava com problema no esquema de ligação, verifiquei e já corrigi, muito obrigado!

      • Paulo
        30 setembro 2024 at 23:43
        Deixe seu Comentário

        Não é problema ligar o módulo alimentado por 5v direto no Esp32 que é 3,3v?

        • Victor Eduardo Ferreira
          1 outubro 2024 at 15:48
          Deixe seu Comentário

          Boa tarde Paulo!

          Ele está conectado na porta Vin do ESP32, que compartilha os 5V do USB, por isso não houve problemas neste exemplo.

          • Paulo
            1 outubro 2024 at 16:01

            Boa tarde Victor,

            Mas é por isso mesmo… a interface i2c do LCD é alimentada pelo 5v e o esp32 é alimentado pelo 3,3 , o que faz o GPIO ter como máximo 3,5 v e o SDA da interface terá 5v… algumas pessoas disseram que a interface i2c é open collector, aí tudo bem, coloca um pull up no pino para os 3,3v e tudo certo, mas no Datasheet do chip da interface não diz nada de ser open collector. No meu projeto coloquei um conversor de sinal de ttl para 3,3v… queria não colocar mas não estou confiante em não queimar a gpio do Esp32… é isso!

  • João
    9 outubro 2020 at 20:32
    Deixe seu Comentário

    Boa noite
    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?

  • João
    8 junho 2021 at 13:19
    Deixe seu Comentário

    lcd.init(); e não begin();

    • Matheus Gebert Straub
      17 junho 2021 at 16:15
      Deixe seu Comentário

      Olá João! Obrigado pela dica, realizei a correção no código já!

  • Rafael Galli
    8 novembro 2021 at 11:55
    Deixe seu Comentário

    bom dia, não acho a biblioteca lcd com a instrução lcd.int(), só com begin(), mas não surge nada no LCD, tem uma dica
    obrigado

    • Matheus Gebert Straub
      25 novembro 2021 at 18:40
      Deixe seu Comentário

      Olá Rafael! Você tentou girar o trimpot para ajustar o contraste dos caracteres?

  • Adalberto
    10 agosto 2024 at 18:13
    Deixe seu Comentário

    Boa tarde. Gostaria de saber o link para o github da biblioteca para o display. No post aqui não aparece o link

  • Deixe seu Comentário

    *

    *

    Sobre nós

    Hoje a Usinainfo é um dos maiores ecommerces de Ferramentas, Peças para Eletrônica, Componentes Eletrônicos, Sensores e Arduino do Brasil, contando com uma grande diversidade de produtos na linha de eletrônica.

    Sugestões

    Artigos Relacionados