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() {
}
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.