All my units are single display. I have 13 of them in running controllers throughout the house, no problems. I have an uneasy feeling that there might be an address change or some other gremlin in these new units. The code I've been using is pretty simple:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define I2C_ADDR 0x27
//Initialise the LCD
#define BACKLIGHT_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
LiquidCrystal_I2C lcd(I2C_ADDR, En_pin, Rw_pin, Rs_pin, D4_pin, D5_pin, D6_pin, D7_pin);
//----------------------- setup ---------------------------------
void setup() {
// Switch on the backlight
lcd.setBacklightPin(BACKLIGHT_PIN, POSITIVE);
lcd.setBacklight(HIGH);
lcd.begin(20, 4); // initialize the lcd
...
...
I had a different problem a month ago and a forum member noticed my LCD code and said he thought my code wasn't up to snuff. Seems to work for me, but I'm open to ideas.
floresta, thanks for the "Have you tried the 'HD44780' library?" I have not, maybe I should?