The setcursor command of the LiquidCrystal library contains a bug ( IDE22 , windows 7)
void LiquidCrystal::setCursor(uint8_t col, uint8_t row)
{
int row_offsets[] = { 0x00, 0x40, 0x14, 0x54 };
if ( row > _numlines ) { <<<<<<<<<<<<
row = _numlines-1; // we count rows starting w/0
}
command(LCD_SETDDRAMADDR | (col + row_offsets[row]));
}
It should be -- if (row >= _numLines) --
as when you define lcd.begin(20,4); _numLines will be 4.
If you do setCursor(x,4), row will be 4; the if test will fail and command will access row_offsets[4] which is not defined ... eh outside the array...
Please confirm, (or is it only my version of the LCD lib?)
- reported as bug - Google Code Archive - Long-term storage for Google Code Project Hosting. -