problema con conexion lcd i2c y arduino mega

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

Hola tienes que controlar bien el modelo que tienes de LCD i de donde descargaste las librerias. Tube bastantes problemas con las librerias y tambien el descargarlas desde mi pc de forma correcta si estas seguro de que son correcta prueba que alguien te las descarge te las envie por mail, no se ni porque pero algunas librerias al descargarse en mi pc desde internet no me funcionaban y por increible que parezca al descargarmelas un compañero desde el mismo lugar y recibidas por mail me funcionaba.
Seguro que tienes el problema libreria incorrecta o se te descargan mal como a mi. Por cierto aun que tengas el mismo modelo comprueva la version. compre 2 Tft el mismo modelo y funcionan con librerias distintas.

Suerte