Go Down

Topic: lcd: andare oltre 40 chr (Read 1 time) previous topic - next topic

Testato

premessa:
la maggior parte degli lcd contengono a livello hardware 40 caratteri per righa, quindi quando li pilotiamo ad esempio con la libreria ufficiale se stampiamo una stringa di 41 caratteri il 41° se ne va sul secondo rigo, oppure sul 4, oppure dove diavolo vuole lui in base all'hardware, alle righe, ecc.

Domanda (e qui rientriamo nella sezione SW):
Come andare oltre i 40 char ?
Logicamente non avendo lo spazio fisico dei caratteri si deve far scorrere la scritta, il comando di scorrimento e' gia' presente nella libreria, fa scorrere tutto il display, ma sempre di 40 caratteri si parla.
1: Come fare per far scorrere 100, 200, 2000 caratteri ? (credo non sia possibile 2000 per la ram aduinica)
2: Il comando scorrimento shifta tutto il display, come fare per tenere una riga ferma ed una riga in scorrimento ?

credo siano cose difficili, specialmente per un non programmatore come me, esiste forse una libreria ?
Grazie
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

astrobeed


la maggior parte degli lcd contengono a livello hardware 40 caratteri per righa, quindi quando li pilotiamo ad esempio con la libreria ufficiale se stampiamo una stringa di 41 caratteri il 41° se ne va sul secondo rigo, oppure sul 4, oppure dove diavolo vuole lui in base all'hardware, alle righe, ecc.


Non è così, gli LCD Hitachi compatible hanno 80 byte di ram contigua, è il buffer dei caratteri, e viene scritta consecutivamente ogni volta che introduci un nuovo carattere a meno che non usi gli appositi comandi per spostarti lungo questa memoria.
In pratica è possibile ottenere qualunque geometria del display che comporta un massimo di 80 caratteri, p.e. il classico 2x20 che ne usa solo 40, oppure il 4x20 che li usa tutti 80, ma nulla vieta di realizzare un display 8x10, ed esistono fatti così, a seconda della geometria ogni riga usa una certa sezione del buffer e questo può creare problemi perché solitamente vengono usati i primi 40 byte per le righe dispari e i secondi 40 byte per le righe pari, non mi chiedere il motivo perché non lo so.
Esempio pratico, il classico display 20x2 usa i primi 20 byte della ram per la prima riga e 20 byte a partire dal quarantesimo per la seconda riga.

Quote

Come andare oltre i 40 char ?


Non puoi, almeno a livello di display perché la ram quella è quella rimane.

Quote

1: Come fare per far scorrere 100, 200, 2000 caratteri ? (credo non sia possibile 2000 per la ram aduinica)
2: Il comando scorrimento shifta tutto il display, come fare per tenere una riga ferma ed una riga in scorrimento ?


Queste cose vanno gestite da software, nel tuo programma avrai un buffer (stringhe) con le scritte da far scorrere, poi devi aggiornare il display ogni tot shiftando il contenuto della sua ram di quanto serve e solo per locazioni interessate, ti dico subito che non è una cosa semplice da fare, esistono delle librerie pronte che lo fanno, però quelle che conosco sono tutte a pagamento, sicuramente ne esistono di free per Arduino.


m_ri

ti memorizzi in una stringa tutto il testo da stampare..ogni 1000ms(o altro valore) esegui un pezzo di codice che stampi sul display la stringa che parte dall'iesimo carattere e va fino all'(i+n)-esimo carattere,dove i viene incrementato di 1 a ogni stampa,mentre n è la lunghezza della stringa stampabile dal display..devi gestire anche il fatto che,arrivato alla fine della stringa,devi ripartire da capo..

Testato


solitamente vengono usati i primi 40 byte per le righe dispari e i secondi 40 byte per le righe pari

Perche' dici c he non e' come dico io ? Stiamo dicendo la stessa cosa, il tuo "Solitamente" io l'ho scritto "la maggior parte degli lcd"  :)
sono 80 caratteri, e vengono usati 40 per riga, logicamente anche se io ho ragione tu lo spieghi meglio  :smiley-yell:

il mio carinissimo 2x8 appunto messo in scorrimento fa vedere solo 40chr su primo righo e 40 sul secondo

Quote

Queste cose vanno gestite da software, nel tuo programma avrai un buffer (stringhe) con le scritte da far scorrere, poi devi aggiornare il display ogni tot shiftando il contenuto della sua ram di quanto serve e solo per locazioni interessate, ti dico subito che non è una cosa semplice da fare, esistono delle librerie pronte che lo fanno, però quelle che conosco sono tutte a pagamento, sicuramente ne esistono di free per Arduino.

Quindi avevo intuito giusto sulla complessita' della cosa, mi metto alla ricerca di qualcosa, se la trovo posto, se qualcuno la trova prima di me meglio ancora.
grazie dell'intervento  :)
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Michele Menniti

Tanto per darne notizia, sembra che esistano display a 80 caratteri fisici, poi bisogna vedere se ci sono le LIB per Arduino
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