Projeto Arduino com Display LCD e Adaptador I2C

Quem já está a mais tempo trabalhando com Arduino ou até mesmo está recém começando, mas precisa de bastantes portas digitais para o seu projeto sabe que cada porta...

Quem já está a mais tempo trabalhando com Arduino ou até mesmo está recém começando, mas precisa de bastantes portas digitais para o seu projeto sabe que cada porta disponível é crucial para o sucesso do seu projeto, ainda mais se utilizamos um modelo tipo o Arduino UNO que possui somente 13 portas digitais. Sendo assim, vamos trabalhar com o Projeto Arduino com Display LCD  20×4 e Adaptador I2C.

Visando resolver este problema e aumentar a capacidade dos projetos com Arduino, desenvolveu-se o Módulo Adaptador I2C que quando utilizado com Displays LCDs de 16×2 ou 20×4 possuem a capacidade de diminuir o número de portas digitais utilizadas.

Comumente um projeto que envolve a utilização de displays LCDs utiliza 6 pinos digitais mais os pinos de alimentação para o seu funcionamento, mas com o Módulo I2C você reduz este número para apenas 2 portas, que por utilizarem o sistema de comunicação I2C são conectadas junto às portas analógicas do Arduino.

 

Principais Funções do Módulo Adaptador I2C:

Jumper do Backlight: Jumper responsável por permanecer com o Backlight aceso quando conectado ao módulo ou apaga-lo quando desconectado.

Pinos para Conexão junto ao Display: Pinos que devem ser soldados na parte de trás do Display para garantir a comunicação e interpretação dos sinais.

Trimpot para ajuste do Backlight: Trimpot responsável por regular o contraste dos caracteres do display, tornando-os mais amostra ou menos.

Pinos para Conexão junto ao Arduino: Os pinos que constituem o Módulo Adaptador I2C são: GND (Negativo), VCC (Positivo), SDA (Pino de Comunicação I2C), SCL (Pino de Comunicação I2C).

Seletor para Código I2C: Através de uma combinação certa, possibilita diferentes endereços para comunicação I2C, possibilitando a conexão de mais de um equipamento nos mesmos pinos.

Conforme a tabela abaixo, podemos verificar os sequenciais que definem cada um dos endereços de comunicação, ou seja, por possuir 8 possibilidades de endereço, podem ser conectados 8 diferentes display nas mesmas duas portas SDA e SCL.

Por padrão, comumente o Módulo Adaptador I2C vem configurado com o endereço 0x27, mas você pode alterá-los sempre que necessário utilizando os pinos A0, A1 e A2 demonstrados no módulo, outros modelos, como o Display LCD 20×4 comercializados em nosso site possuem endereço fixo e não suportam endereçamento.

Para configurar o endereço de comunicação do módulo, basta utilizar a sequencia de bits representada através da tabela vista anteriormente como base para identificar quais os terminais A0, A1 e A2 devem ser interligados, para isto é necessário um pingo de solda que interligue as duas extremidades.

Quando as duas extremidades de cada pino estiverem conectadas entre sí, este pino estará representando um caractere igual à 0 e quando estes mesmos pinos estiverem em seu modo inicial, sem solda, o mesmo estará representando um caractere igual à 1.

 

Aplicação e Funcionamento

Que as utilidades deste exclusivo Módulo Adaptador são realmente relevantes para o desenvolvimento do  Projeto Arduino com Display LCD  20×4 e Adaptador I2C, principalmente para aqueles mais complexos que necessitam da utilização elevadas de portas digitais, não temos dúvidas, principalmente após compreendermos como funciona a linguagem I2C.

Para quem está iniciando neste universo maker e de projetos pode ficar com algumas dúvidas, ainda mais que o código utilizado para o funcionamento de um Display com I2C é diferente do código convencional utilizado com Displays.
Para auxiliar quem ainda tem dúvidas neste processo, desenvolvemos o referente projeto, que irá de forma simples demonstrar a diferença existente entre os códigos com I2C e sem I2C, além de demonstrar o modo de ligação utilizado.

 

Produtos Utilizados no Projeto

Para o referente projeto Arduino com Display LCD  20×4 e Adaptador I2C podemos utilizar qualquer Display LCD 16×2 ou 20×4 que tenha soldado junto aos seus pinos um Módulo Adaptador I2C, ou que seja instalado em uma protoboard de maneira que possibilite a comunicação entre os equipamentos.

Optamos pela utilização de um produto que já possui o adaptador soldado junto aos pinos do display, comercializado de modo que baste conectar os jumpers no módulo e no Ardino, porém este modelo possui uma desvantagem já que é comercializado com o endereço fixo em 0x27.

Para o projeto utilizamos:

Porém também pode-se utilizar outros modelos de Arduino e de displays, como:

Vale lembrar que a utilização de displays como estes acima, necessitam da inclusão de um Módulo Adaptador para a comunicação I2C como o abaixo:

 

Montagem Física (Hardware)

A montagem física de ambos os meios de exibição através do Display LCD é o que mais se diferencia de um método para o outro, quando utilizado o método tradicional sem o Adaptador I2C a quantia de jumpers e conexões utilizada pode ser observada através da imagem abaixo:

Além de depender da instalação de um potenciômetro junto ao display que é fundamental para o funcionamento do mesmo, este esquema utiliza-se de 6 pinos digitais conectados entre o Arduino e o Display, além dos demais pinos necessários para a alimentação, tanto os modelos 16×2 quando 20×4 possuem o mesmo esquema de ligação.

Diferente do esquema de ligação utilizado pela forma tradicional e desenvolvido para diminuir a complexibilidade das conexões temos o Módulo Adaptador I2C, um método simplificado de alimentação que necessita de somente 2 pinos para alimentação e 2 pinos para a comunicação, que neste caso é através das portas analógicas do Arduino.

Estas informações podem ser constatadas logo abaixo junto ao esquema de ligação desenvolvido para a demonstração de funcionamento do projeto arduino com display LCD  20×4 e adaptador I2C. Como podemos observar, o potenciômetro sempre utilizado em projetos com display neste caso foi substituído por um trimpot conectado diretamente ao módulo.

Vamos ver uma comparação rápida entre estes dois métodos, enquanto um método utiliza 14 jumpers o outro utiliza somente 4, enquanto um necessita de protoboard e trimpot o outro não necessita destes equipamentos para funcionamento, como podemos ver, muitas são as vantagens de se utilizar o Adaptador I2C.

 

Como Alterar o Código Tradicional para I2C

Para você que achou grande a diferença entre os modos de conexão de ambos os métodos, saiba que o esquema de adaptação do código é extremamente simples e facilmente compreendido por quem deseja mudar o seu projeto sem se preocupar muito com o código.

Vamos começar com um código exemplo para impressão de textos em um display LCD 20×4:

Este é um código simples que possui como finalidade somente apresentar os caracteres descritos junto ao código no Display LCD 20×4, vale lembrar que 20 sendo o número de colunas, é o número máximo de caracteres possíveis por linha, caso esteja utilizando um display 16×2 outras alterações devem ser feitas junto ao código, como a remoção de caracteres e linhas.

Para alterar este código, e torna-lo compatível com o sistema de comunicação I2C é somente necessário a realização de dois passos:

Incluir bibliotecas para comunicação I2C: É necessário para este procedimento a inclusão das bibliotecas Wire e LiquidCrystal_I2C (Download AQUI), esta segunda biblioteca é a única que necessita ser incluída na pasta libraries do Arduino, veja:

Em vez de:

Vamos alterar para:

 

Identificar o Endereço utilizado pelo Adaptador: Anteriormente trabalhamos com pinos digitais, os identificamos e nomeamos para reconhecimento do Arduino, neste caso vamos identificar o Endereço e demais informações para a comunicação, veja:

Em vez de:

Vamos alterar para:

Alterar o modo de inicialização do Display: Como estamos trabalhando com um sistema diferente, a inicialização deste modelo também é um pouco diferenciada, para isto temos que alterar o que define as colunas e linhas no void setup pelas variáveis de inicialização, veja:

Em vez de:

Vamos alterar para:

Com isto, todas as alterações necessárias já estarão realizadas e o código para comunicação I2C fica da seguinte forma:

 

Conclusão

Alterar o sistema de comunicação parece ser algo complicado e que pode nos dar muita dor de cabeça, porém como pudemos ver, é um procedimento simples e que pode ser realizado sem problema algum, desde que tenha a biblioteca certa e as variáveis definidas.

Com o fim do Projeto Arduino com Display LCD  20×4 e Adaptador I2C, pudemos verificar bem acentuadamente que a diferença no sistema de conexão é extremamente grande, diminuímos consideravelmente o número de jumpers e conexões e que a alteração no código é extremamente simples sem maiores segredos e dificuldade.

Agora o próximo passo é desenvolver novos projetos, novos códigos e novas possibilidades, utilize este projeto como base para diversos outros e não esqueça de comentar suas experiências logo abaixo nos comentários, esperamos eu tenham gostado deste artigo e até a próxima!

Categorias
ArduinoProjetos

Mecânico de Manutenção com Experiência em Sistemas Embarcados, Automação e Desenvolvimento de Projetos; Graduado nos Cursos de Matemática - URI e Física - UFFS.
13 Número de Comentários
  • yanagida
    8 julho 2018 at 04:28
    Deixe seu Comentário
  • Cialisonline
    9 julho 2018 at 05:39
    Deixe seu Comentário

    Equipe Usinainfo,thanks a lot for the article post.Much thanks again. Fantastic.

  • Carol
    30 julho 2019 at 18:57
    Deixe seu Comentário

    Estou tentando utilizar 2 sensores de temperatura MLX90614 com o mesmo arduino. Após utilizar o i2C scanner, constatei que ambos possuem o mesmo endereço de comunicação de fábrica, gostaria de saber como posso alterar esses endereços.

    • Equipe Usinainfo
      8 agosto 2019 at 17:48
      Deixe seu Comentário

      Boa tarde Carol!
      A alteração do endereço de um equipamento I2C comumente é definida via código, caso não exista pinos de auxilio para configuração direta.

  • Vinicius
    31 janeiro 2020 at 15:07
    Deixe seu Comentário

    caso eu queira utilizar essa programação em um display 16×2 tenho que mudar alguma coisa?

    • Matheus Gebert Straub
      13 fevereiro 2020 at 12:18
      Deixe seu Comentário

      Bom Dia Vinicius! Caso opte por utilizar um display 16×2 será necessário alterar a seguinte variável:

      LiquidCrystal_I2C lcd(0x27,20,4); -> Para -> LiquidCrystal_I2C lcd(0x27,16,2);

      Além disto, recomendo também que elimine as linhas 2 e 3 do código.

  • jose de anchieta rodrigues
    29 outubro 2020 at 12:01
    Deixe seu Comentário

    Projeto simples e claríssimo. Parabéns, Straub. Esse projeto me será muito útil como partida, para um projeto que lerá correntes dc com sensores ACS712-05B e ficará mostrando os seus valores em um lcd 20×4 com I2C.

  • EduaRDO BAMBIRRA
    27 março 2021 at 20:45
    Deixe seu Comentário

    Olá Matheus. Bacana demais!!! É possível fazer scroll (rolar um texto) com ic2?

    • Matheus Gebert Straub
      29 março 2021 at 10:43
      Deixe seu Comentário

      Olá Eduardo! É possível utilizar esta função normalmente, assim como nos projetos sem adaptador I2C.

  • Rui
    20 maio 2021 at 11:45
    Deixe seu Comentário

    Desconheço este formato de inclusão de bibliotecas :

    #include LiquidCrystal.h;

    #include Wire.h;
    #include LiquidCrystal_I2C.h;

    Rui

    • Matheus Gebert Straub
      14 junho 2021 at 13:58
      Deixe seu Comentário

      Olá Rui! Realmente há um erro nestas bibliotecas, o correto é incluir entre o nome da biblioteca símbolos como <> ou “”. O código foi corrigido já, muito obrigado pela dica!

  • Porfirio Cabaleiro Cortizo
    12 junho 2021 at 15:52
    Deixe seu Comentário

    Boa tarde. Muito bom a apresentação, mas fiquei com uma dúvida. Estou usando o STM32F103C8T6 com o PCF8574. Não vi no programa como definir quem são os pinos da interface I2C (SDA e SCL). Esse processador tem dois módulos de I2C e assim posso optar entre o módulo 1 ou o 2. No módulo 1 o sinal SCL1 pode ser no pinos PB6 ou no PB8 enquanto que o sinal SDA1 pode ser no pino PB7 ou no PB9. No módulo 2 o sinal SDA2 é no pino PB11 e SCL2 no pino 10. Onde é feita a declaração dos pinos no programa?

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

      Olá Porfirio! No Arduino existem pinos fixos para a comunicação I2C e estes estão declarados na biblioteca já, não estão declarados no código.

    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