Neste artigo veremos:
O que você vai precisar
1 LCD 1602 ou 2004 com I2C (se o seu for sem I2C clique aqui) – (Caso o LCD seja o 2004, mude a programação abaixo (lcd.begin(16, 2); por lcd.begin(20, 4);)
Biblioteca NewliquidCrystal que poderá ser encontrada aqui
Fios (jumpers)
A Conexão
A conexão com os módulos I2C ocorre de maneira muito simples.
Vcc – 5v do Arduino
Gnd – Gns do Arduino
SDA (Dados) – na maioria dos Arduinos (A4), no Mega (20), no Leonardo (D2)
SCL (Clock) – na maioria dos Arduinos (A5), no Mega (21), no Leonardo (D3)
Cada módulo tem um endereço específico, dessa forma é possível ligar vários dispositivos na mesma porta.
Veja como trocar o endereço, na tabela abaixo (cada chip, possui até 8 combinações)
O padrão é o endereço 0x3F para o chip PCF8574AT e 0x27 para o PCF8574T, pois não há nenhum jumper.
Caso você queira usar mais de um LCD ao mesmo tempo, na mesma porta, terá que soldar as conexões, fechando dessa forma o Jumper, para que um novo endereço seja criado, considerando a tabela acima.
Estamos utilizando 2, logo como eles estão utilizando o mesmo chip (mesmo endereço), tivemos que soldar um deles.
O endereço ficou 0x3E, porque soldamos somente o A0.
A programação
Scanner
Para saber qual é o seu endereço (ler qualquer dispositivo conectado I2c)
// from https://playground.arduino.cc/Main/I2cScanner?action=sourceblock&num=1
#include <Wire.h>
void setup()
{
Wire.begin();
Serial.begin(9600);
while (!Serial);
Serial.println("\nI2C Scanner");
}
void loop()
{
byte error, address;
int nDevices;
Serial.println("Scaneando...");
nDevices = 0;
for(address = 1; address < 127; address++ )
{
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0)
{
Serial.print("Dispositivo I2C encontrado no endereço 0x");
if (address<16)
Serial.print("0");
Serial.print(address,HEX);
Serial.println(" !");
nDevices++;
}
else if (error==4)
{
Serial.print("Erro desconhecido no endereço 0x");
if (address<16)
Serial.print("0");
Serial.println(address,HEX);
}
}
if (nDevices == 0)
Serial.println("Não encontramos nenhum dispositivo I2C\n");
else
Serial.println("pronto\n");
delay(5000);
}
Programa
Para usar 2 visores ao mesmo tempo
// Este exemplo foi criado por Edson Sidnei Sobreira
// Domínio Público
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Inicializa o display no endereco 0x27
LiquidCrystal_I2C lcd_1(0x3F,2,1,0,4,5,6,7,3, POSITIVE);
LiquidCrystal_I2C lcd_2(0x3E,2,1,0,4,5,6,7,3, POSITIVE);
byte sym[8] = {0x0,0xe,0x10,0x10,0x11,0xe,0x18};
byte sym1[8] = {0xe,0x0,0xe,0x1,0xf,0x11,0xf};
byte sym2[8] = {0xe,0x11,0xe,0x1b,0x4,0xa,0x11};
byte sym3[8] = {0xe,0x11,0xe,0xa,0x15,0xa,0x11};
void setup()
{
lcd_1.begin (16,2);
lcd_2.begin (20,4);
lcd_2.createChar(0, sym);
lcd_2.createChar(1, sym1);
lcd_2.createChar(2, sym2);
lcd_2.createChar(3, sym3);
}
void loop()
{
lcd_1.setBacklight(HIGH);
lcd_1.setCursor(0,0);
lcd_1.print(" HackEduca");
lcd_1.setCursor(0,1);
lcd_1.print("hackeduca.com.br");
delay(1000);
lcd_2.setBacklight(HIGH);
lcd_2.setCursor(0,0);
lcd_2.print((char)2);
lcd_2.print(" HackEduca");
lcd_2.setCursor(0,1);
lcd_2.print("www.hackeduca.com.br");
lcd_2.setCursor(0,2);
lcd_2.print(" Educa");
lcd_2.print((char)0);
lcd_2.print((char)1);
lcd_2.print("o");
lcd_2.setCursor(0,3);
lcd_2.print(" Tecnologia");
delay(1000);
lcd_2.setCursor(0,0);
lcd_2.print((char)3);
}













No Comments