Multilinea su display 20x4 HD44780 compatibile

Salute a tutti!

Ho un problema con il mio progetto: in pratica, quando vado a capo (o la stringa è troppo lunga) su un display LCD 20 colonne x 4 righe mi salta una riga.

Invece di avere riga -> riga -> riga -> riga ottengo riga -> riga vuota -> riga -> riga vuota.
Il codice:

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
 
  lcd.begin(20, 4);
   lcd.setCursor(0,1);
 
  lcd.print("Questa è una stringa molto lunga solo per dimostrare che dovrebbe funzionare correttamente! ");

}

void loop() {

}

In pratica appare come l'ultimo esempio qui:

E' un problema della libreria LiquidCristal?

Grazie e saluti!

No, è un problema della ram dell'LCD, è gestita così, devi quindi fare in modo da indirizzare tu il testo, non superando i 20 caratteri, per evitare il cambio riga automatico, puntando il cursore alla riga esatta.

Quindi, in pratica, dovrei creare delle procedure che puntano dove serve da richiamare quando mi servono con setCursor(x,y)?
Sarei curioso di capire perché hanno gestito la cosa così. Infatti, se uso "println" o "\n" ottengo sì il caporiga, ma anche dei caratteri strani (suppongo l'escape di EOL). Ma tant'è...

La rottura di scatole sta nel fatto che se mi serve nel loop diventa un po' farraginoso da gestire... non ci sono librerie che "sanno" di questa peculiarità?

Che sappia io no, puoi costruirti tu un minimo di protocollo, con dei caratteri speciali che hanno il significato del set cursor (x,y). Io ne ho provate diverse ma non c'è nulla che permetta di gestire in automatico la suddivisione del testo su più righe.