The address and the sample code are, not surprisingly, wrong. The address of the one that I am using is 0x20, not 0x27, and you do have to set up the pins in order. My Arduino Serial board has its SCL on A0, and its SDA on A1.

I traced the connections using an ohmmeter, and here is the correct line of code. First I track all the relevant pins to the chip, then I use the chip's documentation to find out which of the P0 to P7 chips it is. It is not nearly as easy to trace the pin that controls the backlight, but there are eight possibilities, seven already traced, so it's the one that is left. I have it working and properly backlit:

// Print our characters on the LCD lcd.backlight(); //Backlight ON if under program control lcd.setCursor(3,0); //Start at character 3 on line 0 lcd.print("Hello, world!"); delay(1000); lcd.setCursor(2,1); lcd.print("From YourDuino"); delay(1000); lcd.setCursor(0,2); lcd.print("20 by 4 Line Display"); lcd.setCursor(0,3); delay(2000); lcd.print("http://YourDuino.com"); delay(8000);} // END Loop

This code turns the baklight on and of and displays (as stated before) only blobs on line 1 and 3. I have attached images of my setup.

Im also using the emall4u board. It's not working with the pins you posted. What screen are you using? Also im using a Nano-board. Wich seems to also cause problems for some people

If your i2c board was the same, then it should work.This is starting to turn into a thread hyjack.(A new thread for your issues would be better)

Quote

Since the backlight turns on i gather that the arduino and IIC are talking. Wich leaves 2 options. The pins are wrong or there is something wrong with the IIC-board.

Not necessarily. The backlight may be on by default.They key to getting it to work, is to do what Tomki did.Figure how how the i2c chip is wired up to the LCD.From that, it is fairly easy to determine the proper constructor for fm's library.

With respect to initialization,I would use the newer larger constructor like Tomki did vs using the legacy lcd.setBacklightPin() function.fm's latest code now attempts to turn on the backlight by default before lcd.begin() returns.The backlight will be on when lcd.begin() returns assuming the i2c address and pins in the constructor are correct

My preference is also to use the lcd.backight() and lcd.noBacklight() vs lcd.setBacklight(value)to turn the LCD backlight on an off since those are compatible with interfaces that support dimming.Using lcd.setBacklight(1) will be a very dim backlight on interfaces that support dimming.

The sample code you posted is not turning the backlight on and off. So if you see it flickering,then something is wrong - more than likely incorrect pins in the constructor.

To test the backlight pin and mode in the constructor, all you have to do istry something like:

But guessing is not the answer. The real solution, is trace the wires from the PCF8574 to the LCD interfaceyou can either to it visually or with an ohm meter.Once you know where the wires go, then getting the constructor correct is easy.