Go Down

Topic: Multilinea su display 20x4 HD44780 compatibile (Read 652 times) previous topic - next topic

altagest

Oct 10, 2012, 06:52 pm Last Edit: Oct 10, 2012, 06:57 pm by altagest Reason: 1
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:

Code: [Select]

#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:

http://learn.adafruit.com/character-lcds/using-a-character-lcd


E' un problema della libreria LiquidCristal?

Grazie e saluti!

Michele Menniti

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.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

altagest

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à?

Michele Menniti

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.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Go Up