FAVORITAR
FecharPlease login

Franzininho WiFi: Display LCD 16×2 com comunicação I2C

Introdução

O Display LCD 16×2 é amplamente utilizado em projetos que requerem uma interface homem-máquina (IHM) eficiente. Com 16 colunas e 2 linhas, esse display exibe caracteres, letras e números com clareza e nitidez, graças à sua cor monocromática e backlight. Essa combinação melhora a visibilidade para quem recebe as informações.

O Display LCD 16×2 utiliza o controlador HD44780, que é amplamente adotado na indústria de LCDs como base de interface. 

Neste artigo vamos utilizar um dos modelos de LCD que utilizam o módulo expansor de I/O I2C PCF8574 para interfacear com o display e para simplificar a interface de comunicação com o Franzininho WiFi.

Instalação da Biblioteca 

Vamos instalar a  biblioteca LiquidCrystal_I2C.h , para auxiliar na configuração do canal I2C e acessar os métodos que irão imprimir na tela letras e/ou números em nosso exemplo de projeto. Siga os passos abaixo para realizar a instalação.

Acesse: Ferramenta -> Gerenciador de Bibliotecas (Tools  -> Manager Libraries)

Figura 1: Acessando o gerenciador de bibliotecas

Após acessar o Gerenciador de biblioteca (Manager Libraries) aguarde até que surja uma janela como mostrado na figura abaixo. Digite no campo de texto : liquidcrystal i2c e aguarde o resultado da pesquisa finalizar. Procure pela biblioteca LiquidCrystal I2C by Frank de Brabander e clique em Install para concluir a instalação e clique em Close. Pronto já estamos aptos a utilizar a biblioteca.

Display LCD 16x2
Figura 2: Instalação da biblioteca

Biblioteca LiquidCrystal I2C

Após realizar a instalação da biblioteca vamos apresentar os métodos utilizados no exemplo de projeto. Para mais informações sobre a biblioteca, consulte o repositório no GitHub

 init()

Inicia a comunicação I2C e envia os comandos para o controlador informando o número de linhas e colunas (16×2, 16×4 ou 20×4).

 clear()

Limpa todos os caracteres da tela.

backlight()

Aciona a luz de fundo do display para visualizar os caracteres impressos.

noBacklight()

Desliga a luz de fundo do display, esse método é utilizado quando a aplicação precisa economizar energia ou diminuir a exposição a luz

home()

Posiciona o cursor para a posição de origem (0,0).

 setCursor()

Posiciona o cursor na posição desejada.

  • col : coluna onde posiciona o cursor
  • row : linha onde o cursor vai se posicionar

Lembre-se: Cada display possui um número máximo de linhas e coluna, caso o cursor seja posicionado fora desse limites os caracteres não serão visíveis, por exemplo 16×2 temos a linha 0 e linha 1.

 scrollDisplayLeft()

Empurra os caracteres para o lado direito

 scrollDisplayRight()

Empurra os caracteres para o lado direito.

Materiais necessários

Os materiais necessários para desenvolver nossa aplicação são:

  • Placa Franzininho WiFi
  • Display LCD 16×2
  • Módulo I2C PCF85740
  • Jumpers
  • Arduino IDE 

Circuito 

Abaixo temos a montagem do circuito. O módulo comunica-se via I2C, confira as conexões antes de ligar o display. 

Figura 3: Montagem do circuito com display com módulo i2c e o Franzininho WiFi

Observe na parte posterior do display temos o módulo I2C o qual vai facilitar a comunicação entre a Franzininho WiFi e o display LCD. Abaixo temos a imagem mostrando cada elemento.

Figura 4: Modulo I2C PCF8754
  1. Jumper para acionar o backlight;
  2. Jumpers para selecionar o endereço I2C, por padrão não vem soldados;
  3. Trimpot para ajustar a nitidez dos caracteres, caso os caracteres não estejam visíveis, rotacione o eixo com auxílio de uma chave.

Código

Simule o exemplo no Wokwi: https://wokwi.com/projects/368696714054290433

Explicação do Código

Inclui a biblioteca para acessar os métodos e declarar o(s) objeto(s).

Define o número de colunas e linhas de acordo com o modelo do display, em nosso projeto utilizamos o 16×2 e o endereço I2C padrão.

Declara o construtor junto com os parâmetros de endereço, número de colunas e linhas. A partir dele vamos fazer a chamada dos métodos da biblioteca.

Declara as variáveis do tipo char para receber as frases a serem impressas no display. 

Declara as variáveis para percorrem caracter por caracter, um índice (i) e armazenar a quantidade de caracter em cada frase. 

No setup fazemos a configuração do display pelo método init(), internamente dele iniciamos a comunicação I2C com o módulo e logo envia-se os comandos do display. Após passar essa etapa limpamos a tela do display, garantindo que durante o processo de inicialização não impressos caracteres oriundo de ruídos ou interferências e por fim habilita a luz de fundo do display. 

A primeira etapa da demonstração inicia posicionando as frases por meio do curso (setCursor) e logo após imprimindo (print). Tenha em mente que antes de enviar algum caractere na tela é necessário posicionar no local desejado.

 Após aguardar 5 segundo limpa a tela e habilita para visualizar o cursor na tela.

A segunda demonstração de uso vamos escrever caracter por caracter posicionando o cursor no canto esquerdo superior da tela (home) utilizando um laço de repetição, para isso é necessário um variável para percorrer o vetor (indice) e saber o comprimento do vetor pela função (strlen).  

Novamente limpa a tela e desabilita o curso para vizualização.

Utilizamos o mesmo procedimento do bloco de código anterior, agora escrevendo outra frase. Posiciona o cursor no home e escrevemos caractere por caractere na tela do display.

Na terceira demonstração como desabilitar e habilitar a luz de fundo do display.

Limpa a tela para remover os caracteres anteriores e por fim escrevemos na tela o fim da demo.

Conclusão

Ao concluir este artigo, aprendemos a configurar o display LCD 16×2 juntamente com o módulo I2C PCF 85740, e demonstramos, por meio de um exemplo de projeto, como utilizar os métodos da biblioteca. Foi observado que a simplificação das conexões liberou mais GPIOs que podem ser utilizados para a leitura de sensores ou ativação de atuadores. Outra vantagem é a facilidade de utilizar o mesmo código para displays LCD, bastando apenas alterar o número de linhas e colunas no início do código. Portanto, todas essas informações servem como base para criar projetos com a Franzininho WiFi, aproveitando ao máximo os recursos disponíveis do componente.

Outros artigos da série

<< Franzininho WiFi: Sensor de temperatura DS18B20
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.
Home » Arduino » Franzininho WiFi: Display LCD 16×2 com comunicação I2C

JUNTE-SE HOJE À COMUNIDADE EMBARCADOS