Davey-T: I actually don't know for certain. I tried several, and only found one that works. The problem is, I didn't exactly "log" which driver I'm now using. But gimme some time and I'll see if I can figure it out. In the meantime, I THINK it's this one: https://bitbucket.org/fmalpartida/new-liquidcrystal but I'm not certain. Try that and see if it works. If not, I'll try to get you the right link. Here's a small sketch that shows what worked for me, but again, not entirely positive if that "new-liquidcrystal" driver is what I'm using; sorry, I just kept trying them, over and over. Try this code and please let me know if it works for you. I'd be interested to know. Thanks.
/*
** Example Arduino sketch for SainSmart I2C LCD2004 adapter for HD44780 LCD screens
** Readily found on eBay or http://www.sainsmart.com/
** The LCD2004 module appears to be identical to one marketed by YwRobot
**
** Address pins 0,1 & 2 are all permanently tied high so the address is fixed at 0x27
**
** Written for and tested with Arduino 1.06
** This example uses F Malpartida's NewLiquidCrystal library. Obtain from:
** https://bitbucket.org/fmalpartida/new-liquidcrystal
**
** Edward Comer
** LICENSE: GNU General Public License, version 3 (GPL-3.0)
**
** NOTE: Tested on Arduino NANO whose I2C pins are A4==SDA, A5==SCL
**
** Modified (Heavily) by "bratwurst," (Dean Cashen) 02/01/2015
*/
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
#define I2C_ADDR 0x27 // define I2C Address where the PCF8574A is
#define BL_PIN 3
#define En_pin 2
#define Rw_pin 1
#define Rs_pin 0
#define D4_pin 4
#define D5_pin 5
#define D6_pin 6
#define D7_pin 7
long n = 0; // used just to display "count number" used below
LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);
void setup()
{
lcd.begin (20,4); // set LCD object to 20 chars by 4 lines
// turn on the LCD backlight
lcd.setBacklightPin(BL_PIN, POSITIVE);
lcd.setBacklight(HIGH);
lcd.home (); // go to LCD "home"
lcd.setCursor( 5, 0 ); // set cursor to the 1st line, 5 chars in
lcd.print("Hello World");
lcd.setCursor ( 4, 1 ); // set cursor to the 4th line, 4 chars in
lcd.print(""QC2004A" LCD");
}
void loop()
{
// just some simple code to display an incrementing number ("n" var)
lcd.setCursor( 2, 3 ); // set cursor to 4th line, 2 chars in
lcd.print("- "); // just for "presentation"
lcd.setCursor( 4, 3 ); // set cursor to the 4th line, 4 chars in
lcd.print(n++); // display counter
delay(450); // set update rate
};