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