Módulo Adaptador I2C com Display LCD 20×4 – Como Alterar o Código Arduino para Displays com 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.

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.

Através da Imagem abaixo, podemos verificar todas as funções principais que envolvem a parte física do Módulo Adaptador para comunicação 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 de projetos, 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 PARA O PROJETO

Para o referente projeto 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, 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:

// Blog Usinainfo
// Display LCD 20x4 sem Adaptador I2C e Arduino

//Carrega as bibliotecas necessárias
#include LiquidCrystal.h;

// Define os pinos digitais utilizados pelo Display
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
// Define o número de colunas e linhas do Display
lcd.begin(20, 4);
}

void loop() {
lcd.setCursor(0, 0);
lcd.print("********************");
lcd.setCursor(4, 1);
lcd.print("BLOG USINAINFO");
lcd.setCursor(0, 2);
lcd.print("DISPLAY 20X4 COM I2C");
lcd.setCursor(0, 3);
lcd.print("********************");
}

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:

//Carrega as bibliotecas necessárias
#include LiquidCrystal.h;

Vamos alterar para:

// Carrega as bibliotecas necessárias
#include Wire.h;
#include LiquidCrystal_I2C.;

 

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:

// Define os pinos digitais utilizados pelo Display
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

Vamos alterar para:

// Define o endereço utilizado pelo Adaptador I2C
LiquidCrystal_I2C lcd(0x27,20,4);

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:

 // Define o número de colunas e linhas do Display
lcd.begin (20,4); 

Vamos alterar para:

 //Inicializa o LCD e o backlight
lcd.init();
lcd.backlight(); 

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

// Blog Usinainfo
// Display LCD 20x4 com Adaptador I2C e Arduino;

// Carrega as bibliotecas necessárias
#include Wire.h;
#include LiquidCrystal_I2C.h;

// Define o endereço utilizado pelo Adaptador I2C
LiquidCrystal_I2C lcd(0x27,20,4);
void setup() {
//Inicializa o LCD e o backlight
lcd.init();
lcd.backlight();
}

void loop() {
lcd.setCursor(0, 0);
lcd.print("********************");
lcd.setCursor(4, 1);
lcd.print("BLOG USINAINFO");
lcd.setCursor(0, 2);
lcd.print("DISPLAY 20X4 COM I2C");
lcd.setCursor(0, 3);
lcd.print("********************");
}

 

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 deste projeto, 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
Arduino
2 Número de Comentários
  • yanagida
    8 julho 2018 at 04:28
    Enviar Resposta
  • Cialisonline
    9 julho 2018 at 05:39
    Enviar Resposta

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

  • Enviar Resposta

    *

    *

    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