LOJA FÍSICA
Praça Mauá, 4541 - Sala 22
09580-050 - São Caetano do Sul / SP
CENTRAL DE ATENDIMENTO
(11) 3522-7626
info@robocore.net
HORÁRIO DE FUNCIONAMENTO
De segunda à sexta das 9:00 às 18:30
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!


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

maivo
date Enviado: 2018-06-28 22:12:54
É possível simular no proteus?

Francois
date Enviado: 2018-06-29 09:40:38
maivo
Infelizmente não temos essa informação.

francisco1030
date Enviado: 2017-12-17 16:31:33
Quando eu conecto o LCD ao I2c o LCD só acende a luz e não aparece o texto. Podem me ajudar

MarceloFarias
date Enviado: 2017-12-18 09:41:06
francisco1030
Siga atentamente aos passos contidos no tutorial. Observe se o endereço está corretamente configurado e também se o potenciômetro de contraste foi devidamente ajustado.

fgoncales
date Enviado: 2018-09-13 22:42:43
francisco1030
Marcelo Farias, o que é esse potenciômetro de contraste? é um dispositivo separado ou o mesmo já existe na placa? estou com o mesmo problema do nosso amigo ai em cima.... obrigado...

Francois
date Enviado: 2018-09-14 10:50:59
francisco1030
O potenciômetro de contraste, que está no módulo LCD I2C, é o componente quadrado azul com um círculo branco no meio.

lwyzpaulo
date Enviado: 2017-10-24 11:58:03
Essa biblioteca e esse módulo funciona com o LCD 20x4? Se funciona como proceder? Grato

MarceloFarias
date Enviado: 2017-10-24 13:47:31
lwyzpaulo
Sim, funciona. Basta soldar o módulo em seu LCD 20x4 conforme as especificações de pinagem. Todo o resto funciona de maneira similar, observe a documentação deste produto como você poderá enviar informações para seu LCD.

ErickCine
date Enviado: 2017-10-13 23:51:38
Bom Dia !! Por favor, para eu utilizar este módulo no LCD para um projeto com arduino Pro mini e um RTC DS3231, como poderia conciliar as portas A4 e A5 ? Pois gostaria de utilizá-lo para resolver o problema das portas disponíveis ao ligar o LCD, com o qual desejo incluir no projeto para exibir e controlar o relógio do RTC, porém o RTC também utiliza os pinos A4 e A5 ... Isso quer dizer que eu não poderia utilizar este módulo ? Obrigado !!

MarceloFarias
date Enviado: 2017-10-16 10:30:11
ErickCine
Na verdade os pinos A4 e A5 são os pinos SDA e SCL do barramento I2C de sua placa Arduino. Isso significa que você pode conectar vários dispositivos I2C com endereços diferentes nesses pinos. Então, sim, você pode conectar os dois nos mesmos pinos, pois o controle deles é feito por um barramento de comunicação. Para mais informações, veja nosso tutorial: https://www.robocore.net/tutoriais/comparacao-entre-protocolos-de-comunicacao-serial.html

ErickCine
date Enviado: 2017-10-16 19:40:35
ErickCine
Perfeito Marcelo ! Agradeço o esclarecimento !! Abração !!

diguinhors7
date Enviado: 2017-10-12 16:10:06
Boa tarde, primeiramente gostaria de parabeniza los pela pagina.
gostaria de saber como faço para imprimir em um lcd 16,4 ?

ViniDj
date Enviado: 2017-10-13 07:46:20
diguinhors7
O que muda é na hora de declarar o tamanho do LCD no comando LiquidCrystal_I2C lcd(0x27,16,2); 
Se quiser usar um 16x4 basta colocar: LiquidCrystal_I2C lcd(0x27,16,4); - isso neste exemplo utilizando interface I2C, se o LCD não possuir esta interface sugiro seguir o seguinte tutorial: https://www.robocore.net/tutoriais/kit-iniciante-para-arduino-modulo-5.html 

DanielValinhos
date Enviado: 2017-09-04 07:23:47
Bom dia. Primeiramente, quero agradecer aos mantenedores do site que me deram uma dica de qual caminho seguir para montar o código de um projeto meu, estudei em cima dessa dica por dias, e hoje de madrugada consegui concluir o código, deu super certo. Valeu!!! Agora vou adicionar esse display no meu projeto, só que o meu não acende de jeito nenhum. Eu não intendi muito essa tabela de endereço, entendi como definir o endereço, mas não entendi a finalidade de definir, sou iniciante e também como saber quais portas ligar  o SDA e o SLC. Se alguém puder me ajudar agradeço.

MarceloFarias
date Enviado: 2017-09-04 09:18:05
DanielValinhos
Ficamos felizes que tenha conseguido! Sobre esse tutorial, você deve realizar a ligação conforme o esquemático. Veja que os pinos de SDA e SLC são conectados aos pinos A4 e A5 da BlackBoard, o mesmo vale para a Arduino UNO. Se sua placa não nenhuma dessas, veja nesse link a tabela de pinos para cada placa: https://www.arduino.cc/en/Reference/Wire. Quando ao endereço, ele serve para identificar individualmente cada display que você quer colocar em seu Arduino. Basta selecionar uma posição das chaves do display conforme a tabela e adicionar o código resultante na linha de código onde o LCD é inicializado:

DanielValinhos
date Enviado: 2017-09-05 02:22:56
DanielValinhos
Boa noite amigo, valeu mais uma vez!! Eu consegui, o problema era a biblioteca desatualizada, instalei uma outra atualizada e foi. Já inclui o display no código fonte e já está funcionando aqui kkk... Pra quem não sabe nada até que estou indo bem. O meu projeto é eu controlar um arduino através de outro arduino, um robô controlado por um módulo joystick, o robo é o server e o joystick é o client. O próximo desafio agora é fazer funcionar pela rede externa, sei que não vai ser tão rápido qto na rede interna, mas é só pra ver o bixinho funcionando kkk. Se puder dar uma dica aí tb de como eu faço isso, eu agradesço kkk

MarceloFarias
date Enviado: 2017-09-05 09:23:03
DanielValinhos
Boa! Dá uma olhada nesse vídeo aqui: https://youtu.be/A4BVrzU-SuQ?t=16m3s