LCD Library not playing well with 1.6.6

Just downloaded and installed 1.6.6. Thought I would get the latest updates, fixes, etc.

I added one more board (SD Card) to a project I have and uploaded to an Uno and... display hosed!

I took out the SD board and almost all code and it still fails. Get single characters instead of complete words and numbers.

Tried the demo in LiquidCrystal_I2C library and it fails. So my code is OK. Have not changed the library or the library demo code until after failure to try to troubleshoot.

Thank goodness I saved the 1.6.5-r5 install. Removed 1.6.6 and reinstalled 1.6.5 and the demo started working properly showing all characters of "Hello World". Put all the code back in my project and it works now again. Even the SD Card.

Something about LiquidCrystal_I2C and Arduino IDE v.1.6.6 are not getting along. My code and the demo both only put up the first letter of any string to the display. The rest is blank.

When doing a setCursor, the first letter comes out at the right place but then the rest is blank. Do another setCursor and you get the first letter of the second string again. Timing issue?

Turns out to be nothing do to with my code. The demo fails, too, so nothing uploaded. Just try the basic Hello World demo from the library.

Using the exact same library and demo code from LiquidCrystal_I2C on both IDE versions. I copy it back from a save location after install. Using a 2004A with the backpack board and SDA/SCL 2-wire connection.

Mike Morrow

I believe the same issue was also reported here: Federico Fissore says the developers are aware of the issue and working on it. You might try the hourly build to see if it's fixed.

If not then maybe this would be of use to you:

common_ground: For exampe , the guy who have problem with 1602 LCD ( only 1 character is printing ) , it is because print procedure is changed in new ide and if library write() function return 0, print stops printing after 1. character ( some libs return 0 instead remaining printing size ), if library is not maintened any more, then it is safe to change return 0 to return 1 in LCD library - write(uint8_t value) function, or use some other 1602 LCD library with active maintainer.

The developer thinks they have found the solution to this issue. See this comment for more information: