Hola , buenos días.
Estoy teniendo unos problemitas para conectar mi lcd i2c con mi arduino mega.
Puedo conectarlos, enciende la luz del fondo, pero no escribe ninguno de los caracteres que le envió, en su lugar me muestra un cuadrado que luego desaparece, y el desplazamiento por las posiciones la realiza en forma errática.
Creo que el problema esta en la librería no es la adecuada para el chip del controlador de la lcd, y que los comandos que le envía no son los correctos, pero he visto en varios foros que muchos han tenido problemas similares, pero no encontré una solución que me sirva.
Estos son los detalles técnicos:
tengo el modelo que viene con 4 pins. vcc ,gnd , sda y scl , y un chip pcf85741 que se encarga de comunicar esos pines con los 16 pines del lcd.
el pin scl lo conecte al pin scl 21 de mi arduino y el sda al pin sda 20 del arduino.
estoy utilizando la libreria Liquid Crystal V 1.2.1.
este es el codigo que estoy probando :
//-------------------------------------------------------------------------------------------------------------------------
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x20,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line display
void setup()
{
lcd.init(); // initialize the lcd
lcd.init();
// Print a message to the LCD.
lcd.backlight();
lcd.setCursor(3,0);
lcd.print("Hello, world!");
lcd.setCursor(2,1);
lcd.print("Ywrobot Arduino!");
lcd.setCursor(0,2);
lcd.print("Arduino LCM IIC 2004");
lcd.setCursor(2,3);
lcd.print("Power By Ec-yuan!");
}
void loop()
{
}
//-------------------------------------------------------------------------------------------------------------------------
También probe el siguiente código con el mismo resultado :
//-------------------------------------------------------------------------------------------------------------------------
#include <Wire.h>
#include <LiquidCrystal_SR.h>
LiquidCrystal_SR lcd(20,21,TWO_WIRE);
// | |
// | -- Clock Pin
// ---- Data/Enable Pin
// Creat a set of new characters
byte armsUp[8] = {0b00100,0b01010,0b00100,0b10101,0b01110,0b00100,0b00100,0b01010};
byte armsDown[8] = {0b00100,0b01010,0b00100,0b00100,0b01110,0b10101,0b00100,0b01010};
void setup(){
lcd.begin(16,2); // initialize the lcd
lcd.createChar (0, armsUp); // load character to the LCD
lcd.createChar (1, armsDown); // load character to the LCD
lcd.home (); // go home
lcd.print("LiquidCrystal_SR");
}
void loop(){
// Do a little animation
for(int i = 0; i <= 15; i++) showHappyGuy(i);
for(int i = 15; i >= 0; i--) showHappyGuy(i);
}
void showHappyGuy(int pos){
lcd.setCursor ( pos, 1 ); // go to position
lcd.print(char(random(0,2))); // show one of the two custom characters
delay(150); // wait so it can be seen
lcd.setCursor ( pos, 1 ); // go to position again
lcd.print(" "); // delete character
}
//-------------------------------------------------------------------------------------------------------------------------
Les agradeceria cualquier ayuda que puedan darme. Saludos Adrian