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)
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 is
try something like:
But guessing is not the answer. The real solution, is trace the wires from the PCF8574 to the LCD interface
you can either to it visually or with an ohm meter.
Once you know where the wires go, then getting the constructor correct is easy.