CENTRAL DE ATENDIMENTO
De segunda à sexta das 8:00 às 17:30
(11) 3522-7626 / vendas@robocore.net
Retornar
ao topo

Módulo I2C - Primeiros Passos



O Módulo LCD I²C ou I2C é ideal para ser utilizado em projetos envolvendo LCDs, podendo estar presente em projetos com Arduino ou outros Microcontroladores que tenham suporte ao protocolo I²C onde há diversos dispositivos (não necessariamente LCDs) que comunicarão entre si com apenas duas linhas de dados.
O protocolo I²C foi desenvolvido pela Philips (atual NXP) visando conectar diversos dispositivos (periféricos) utilizando apenas as duas linhas de dados citados acima (SDA e SCL) Serial Data e Serial Clock. A ideia principal é definir um endereço hexadecimal para cada dispositivo e no momento de comunicação somente o dispositivo solicitado responderá.

Conhecendo cada um dos itens do Módulo LCD I²C:
  • DIP SWITCH: Define o endereço do seu dispositivo (podendo ir de 0x20 a 0x27).
  • Trimpot (potenciômetro): Para quantificar a luminosidade do Backlight do seu Display LCD
  • Conectores Latch (ou IDC): Utilizando Jumpers M/F ou F/F você conecterá o módulo tanto com seu Mestre (no caso desse tutorial uma BlackBoard) quanto a seus Slaves.

É crucial estabelecer o mesmo endereço no Módulo I2C e no Código.




Para começar nosso tutorial precisamos primeiramente instalar a Biblioteca LiquidCrystal_I2C disponível Clicando aqui.
Caso não saiba adicionar uma biblioteca na IDE dê uma olhada no tutorial: Adicionando Bibliotecas na IDE do Arduino.


Nota: o módulo I2C pode ser soldado sob o LCD, desde que sejam feitas as mesmas conexões (exemplo).

Abaixo segue um código básico de Hello World no endereço 0x20 (no conector DIP SWITCH eles devem estar todos setados para cima conforme a ilustração acima):


Agora que já sabemos imprimir na tela do LCD uma informação, vamos a um exemplo que tem como função exibir na Tela do LCD qual a temperatura captada por um LM35. Lembrando que o intuito deste código é apresentar algumas funções disponíveis na Biblioteca. O endereço agora será 0x27 altere o endereço no DIP Switch, deixe todos setados para baixo.




Para fazer comentários é necessário estar logado. Efetuar login.

Você ainda nao é cadastrado? Cadastre-se agora!


freeman.zanella
date Enviado: 2019-11-23 18:36:37
Olá gostaria de saber se funciona com o NodeMCU?

Giovanni5
date Enviado: 2019-11-25 11:15:37
freeman.zanella
Sim, o Display LCD 16x2, com interface I2C deve ser compatível diretamente com o NodeMCU.

freeman.zanella
date Enviado: 2019-11-25 11:40:26
freeman.zanella
Giovanni5, obg pela resposta.

Eu já adquiri o modulo I2C da robocore e a alguns dias estou tentando usar com o NodeMCU porém até agora não obtive sucesso. Nos exemplos citados nessa documentação é usado 2 portas analógicas do arduino para conectar no modulo, só que no NodeMCU eu tenho apenas 1 porta analógica,  como eu faria para usar este modulo com o NodeMCU?

Giovanni5
date Enviado: 2019-11-25 11:49:11
freeman.zanella
A biblioteca "Wire.h" define os pinos A5 4 A4 como as portas SDA e SCL para a comunicação I2C em placas da plataforma Arduino UNO, porem para a placa NodeMCU, o procedimento é diferente, sendo necessário definir os pinos que serão utilizados para essa comunicação. Talvez o tutorial a seguir possa te ajudar com esse projeto, https://www.instructables.com/id/I2C-LCD-on-NodeMCU-V2-With-Arduino-IDE/ .

freeman.zanella
date Enviado: 2019-11-27 01:53:53
freeman.zanella
Giovanni5, novamente muito obrigado por responder.

Testei o código que você sugeriu e infelizmente também não funcionou, e então, resolvi testar no Arduino Uno usando o primeiro exemplo passado neste tutorial, usei o mesmo esquema desenhado no fritzing, configurei as chaves DIP SWITH e o código, e infelizmente também não funcionou. O Display LCD até liga exibe uma linha em vazio e outra totalmente preenchida, isso acontece tanto com o Arduino Uno e o NodeMCU, não é exibido nenhum erro ou warning em ambos os códigos.

Giovanni5
date Enviado: 2019-11-27 07:46:07
freeman.zanella
Como o LCD apresentou a primeira linha inteiramente preenchida, é possível que se trate de um problema na configuração do contraste, que está muito alto para fornecer letras visíveis. Tente, com o código teste executando, ajustar o contraste do LCD girando lentamente o trimpot do módulo I2C, por meio de uma chave de fenda. Caso a configuração do contraste não apresente resultado positivo, envie um e-mail para suporte@robocore.net, com os dados de seu pedido, um breve relato do que está ocorrendo, os testes já realizados, e algumas fotos da placa e dos resultados obtidos.

Sheren
date Enviado: 2019-09-19 16:52:01
Rodei o código  escanner e ele diz que não  foi encontrado o modulo display

Giovanni5
date Enviado: 2019-09-19 17:13:31
Sheren
Envie um e-mail para suporte@robocore.net com os dados de seu pedido, uma breve descrição do que está ocorrendo, e algumas imagens das conexões feitas com o módulo, das configurações do mesmo, e o código utilizado.

Sheren
date Enviado: 2019-09-20 01:46:32
Sheren
Consegui resolver. Troquei os fios jumpers e resolveu o problema. Valeu!

Sheren
date Enviado: 2019-09-18 23:14:50
Boa noite. Quando eu conecto o LCD ao I2c o LCD só acende a luz e não aparece o texto. o código esta carregado igual ao exemplo, o Dip switch estão com as chaves para cima e com o endereço 0x20 e já testei todas possíveis.  Podem me ajudar

Giovanni5
date Enviado: 2019-09-19 09:15:08
Sheren
Tente ajustar o contraste do display através do Trimpot do módulo I2C, é possível que as mensagens estejam sendo exibidas, porém não estão visíveis.

Sheren
date Enviado: 2019-09-19 10:19:15
Sheren
Já fiz isso, mas não adiantou.

Giovanni5
date Enviado: 2019-09-19 10:53:59
Sheren
Tente inverter a conexão dos pinos SDA e SCL (A4 e A5), caso eles estejam invertidos, a mensagem não será exibida corretamente.

Sheren
date Enviado: 2019-09-19 16:50:49
Sheren
Já fiz isso tb amigo e nada.

gui.dno14
date Enviado: 2019-06-12 23:05:58
Para que serve o outro conector do módulo i2c de vocês? E como usá-lo?

Giovanni5
date Enviado: 2019-06-13 11:22:36
gui.dno14
Os dois conectores são utilizados para a mesma função e da mesma maneira. Você pode utilizar a segunda porta de conexão I2C para conectar um segundo display através do módulo, por exemplo.

gui.dno14
date Enviado: 2019-06-13 15:57:01
gui.dno14
Mas como fazer isso só tem uma barra de pinos para conectar no display

Giovanni5
date Enviado: 2019-06-13 16:28:02
gui.dno14
Para conectar dois displays LCD exibindo a mesma mensagem, é necessário que cada um dos dois displays estejam soldados à um módulo I2C. Com isso, é possível conectar um módulo ao outro, conectando o primeiro display à uma placa da plataforma Arduino, através do conector IDC da esquerda, e utilizar o conector da direita para conectar o segundo módulo I2C.

rladmc
date Enviado: 2019-05-22 15:38:57
Boa tarde, o protocolo i2c não trabalha com grandes distâncias segundo alguns estudos q fiz, minha dúvida é, se colocar o módulo próximo ao Arduino e levar por exemplo com Cabo de rede até o LCD, funcionária?

Giovanni5
date Enviado: 2019-05-22 17:20:05
rladmc
Sim, você pode utilizar um cabo de rede para ligar o display LCD ao módulo I2C, porém isso não aumentará o alcance de comunicação por conta disso. A comunicação I2C teria um alcance parecido com a comunicação serial/paralela do cabo de rede, entretanto, é muito mais fácil utilizar apenas quatro fios do que um cabo de rede completo.

ldr_mt
date Enviado: 2018-10-30 12:40:29
tem como eu usar esse lcd junto com um sensor dht22?

Francois
date Enviado: 2018-10-30 12:46:54
ldr_mt
Sim, basta substituir a rotina de leitura do sensor LM35 por uma rotina para o sensor DHT22.

Giovanni5
date Enviado: 2018-10-28 11:45:02
Oi, Bom dia, Gostaria de saber se é possível utilizar esse módulo com display LCD 64x128? E se sim, como fazer isso, basta ligar as mesmas entradas que o 2x16? Agradeço desde já.

Francois
date Enviado: 2018-10-29 13:28:16
Giovanni5
O módulo LCD I2C (https://www.robocore.net/loja/produtos/modulo-lcd-i2c.html) não é totalmente compatível com o LCD Gráfico 128x64 (https://www.robocore.net/loja/produtos/display-grafico-128x64.html), principalmente por causa da incompatibilidade das bibliotecas.

gui.agro
date Enviado: 2018-10-27 01:26:17
Ola, boa noite, estou utilizando um UNO R3, e um LCD I2C para realizar a medição de temperatura com o LM35, no entanto, o SDA e SCL ficam conectadores no analogico 4 e 5, enquanto o sinal do LM35 no analógico 0, o que acontece é que a informação de temperatura está chegando incorretamente ao LCD. Analisando o valor analógico do pino 0, com o sistema ligado isoladamente tenho um valor, porem com o sistema ligado juntamente com o LCD, tenho outro valor, muito maior, interferindo no calculo e resultado da temperatura. Como posso corrigir isso ???  No exemplo de vocês,   o SDA e o SCL estão ,,, quando ligado com o LM35, nas portas 16 e 17, a qual desconheço como seria o uso. Agradeço a atenção. 
Parabens pelo site e obrigado.

Francois
date Enviado: 2018-10-29 13:32:09
gui.agro
Você está testando o exemplo do tutorial desta página? O módulo LCD I2C usa o protocolo de comunicação I2C para controlar o display de LCD. Por mais que use os pinos A4 e A5 do Arduino Uno, isso não influencia na leitura analógica no pino 0.

Os pinos 16 e 17 correspondem aos pinos A2 e A3 no Arduino Uno (o 14 é o A0 e assim por diante).

brunorodrigues100kbc
date Enviado: 2018-10-14 00:33:11
o código está igual, já mexi no potenciômetro mas ainda não apareceu o texto.

Francois
date Enviado: 2018-10-15 18:17:26
brunorodrigues100kbc
O endereço do módulo, configurado pelo DIP Switch da placa, é o mesmo que o endereço definido no programa? As três chaves na posição On (para cima) correspondem ao endereço 0x20, enquanto todas para baixo correspondem ao endereço 0x27.

alex.souzaborges
date Enviado: 2018-09-05 23:43:11
Onde consigo comprar display da cor desta da foto, quero fazer um computador de bordo para o carro, esta cor seria ideal.

ViniDj
date Enviado: 2018-09-06 10:14:06
alex.souzaborges
Se está se referindo ao display usado na foto no topo da página, você encontra aqui mesmo na RoboCore. Segue os links:
- LCD com módulo I2C: https://www.robocore.net/loja/produtos/lcd-16x2-5v-com-interface-i2c.html
- LCD sem módulo I2C: https://www.robocore.net/loja/produtos/lcd-16x2-5v-laranja-no-preto.html

alex.souzaborges
date Enviado: 2018-09-06 19:59:00
alex.souzaborges
Precisava dele 20x4 mas não encontrei.

Francois
date Enviado: 2018-09-06 20:07:44
alex.souzaborges
Segue o link para display de 20x4: https://www.robocore.net/loja/produtos/lcd-20x4-5v-preto-no-verde.html