LCD 16*02 I2C shield only shows first character printed
That's definitely a bug appeared in 1.6.6. For reference, see https://blog.arduino.cc/2015/11/03/arduino-ide-1-6-6-released-and-available-for-download/#comment-278766 https://forum.arduino.cc/index.php?topic=359652.0 http://forum.arduino.cc/index.php?topic=357312.msg2476987#msg2476987
Last link seems to provide a solution, by a updated version of LCD I2C lib : https://github.com/marcoschwartz/LiquidCrystal_I2C (not yet tried).
The 1.6.6 is a bit messy according some people, but the I2C lib too ;). So the question is : where should it be fixed ?
Your code contains, in part,
#include <LiquidCrystal_I2C.h>
....
LiquidCrystal_I2C lcd(0x27, 16, 2); // set the LCD address to 0x27 for a 16 chars and 2 line display
void setup() {
lcd.init();
lcd.backlight();
}
For all of the constructors in LiquidCrystal_I2C.h
on my system, the second and third parameters are EN
and RW
, ie, the enable and read/write backpack-pin numbers. They don't specify the size of the display.
I suggest trying constructor usage like
LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7); // 0x27 is the I2C bus address for an unmodified backpack
and in place of lcd.init();
say
lcd.begin (16,2); // for 16 x 2 LCD module
Note, lcd.begin()
will call init()
.
I'm incredibly new to Arduino (I literally got one a few hours ago and I'm still finding my feet with it!) so take that into account when considering anything I say however I'd be inclined to agree that this may be an issue with the 1.6.6 IDE.
I was getting pretty much the same symptoms on a Freematics MEGA2560/3.2" SSD1289 LCD using the MultiLCD library using 1.6.6. Based on your comment above I uninstalled and installed 1.6.5 instead, recompiled and uploaded and it's now displaying properly...