When you using 16x4 (instead 20x4) display, then due this line buffer is shifted by 4 chars
|
addr += 0x14 # Lines 2 & 3 add 0x14 |
when you change this 0x14 to 0x10, it works. I suggest somehow IF it based on LCD_COLS
somethings like 0x10 if LCD_COLS==16 else 0x14