floresta:
The interface pc boards are all essentially the same as well. There are two almost identical ICs that can be used. The version with a 'A' suffix has a base address of 0x38 and the version without the 'A' (there may be other letters on each version) has a base address of 0x20. The board may or may not have jumpers available to change the address. The jumpers, if they exist, are typically solder blobs labeled A0, A1, and A2. If you are lucky there may be removable jumpers instead of the solder blobs. If you are even luckier there may be switches. I haven't seen either of these on the photographs posted lately.[/color]
Don
Just to add to this.
From what I've seen on ebay and other vendors selling i2c to lcd boards,
the vast majority are "essentially the same" since they use the same i2c chip (pcf8574).
However, not all boards use the PCF8574 chip. Some like the adafruit i2c to lcd board use a MCP23008 chip.
For those not aware, the pcf8574 and MCP23008 are two different i2c i/o expanders.
While they are both i2c 8 bit i/o expanders, they do not work the same and require slightly
different code to drive them.
But for the boards that do use the pcf8574,
the biggest difference between them, and the reason for most of the issues people are having,
is how that i2c chip is wired up to the hd44780 interface (lcd module).
While the hd44780 pinout and interface is standardized, how you hook up a pcf8574 chip
to an hd44780 interface is not.
Different i2c to lcd boards wire up the 8 output pins to the lcd module differently.
There is no way for the s/w to determine how the pcf8574 chip is wired up to the lcd module.
Because of this, the s/w has must "know" how the i2c chip is wired to the LCD.
Most libraries are hard coded for a particular wiring, some like fm's library allow the sketch
to configure the wiring.
If the library is hard coded and the library's assumptions on the wiring do not match the actual wiring,
the library will think everything is working ok, but the LCD will not work
correctly and usually just sit there with a row of boxes on the top line.
Compounding this, is that vendors are taking the same "LiquidCrystal_I2C" library code
and modifying it to match their particular i2c to lcd board and providing links to
their modified libraries.
So that means that are several different versions of the "LiquidCrystal_I2C" libraries
floating around. Unless you look closed at the library code, you cannot tell which version
of the library you have.
Even worse, some vendors provide links to versions of the libraries that do not
match the hardware they are selling.
What all this means is that when using the "LiquidCrystal_I2C" library, it isn't
guraranteed that the library will necessarily match the i2c to lcd board that you have.
And if the library is not matched to the board you have, it won't work.
fm's library, mentioned above, is different. It can be configured. This means that the sketch
must tell the library how the pcf8574 chip is wired to the hd44780 interface.
The user's sketch must fill in the library's constructor to tell the library how
the pcf8574 is wired up to the hd44780 interface.
While the libraries that used hard coded pcf8574 to hd44780 pin mappings
are slightly easier to use, in that the user does not have to fill in the mappings,
the user must ensure that he has the correct version of the library since there
is more than one version of the library because not all boards use the same pin
mappings.
--- bill