How to fix all LCD problems - read this!

It is very unfortunate the the LiquidCrystal library use the term "scroll" instead of "shift" in the api.

What they did when they implemented the begin() function is even more unfortunate. If you forget to include that function, or if you use a sketch written for an older version of LiquidCrystal that didn't have such a function, the implementation is for a 'one line' display.

The problem is that there are almost no true one line displays around. Even most displays that have one row of sixteen characters and look like a 16x1 are internally set up as 8x2. This means that the default configuration will work correctly with only some very rare displays while the commonly used ones will have poor contrast on the first row and no display on the other(s).

So, in my opinion, the default should be 16x2 since that setup will work correctly for almost all displays. With 16x2 as default only the true 16x1s will be messed up and the 16x4s will look ok but they will have their third and fourth rows offset by 4 spaces - but the 16x4s do that anyway with the current library even if you invoke them as 16x4 in begin().

Don