libreria liquid crystal

ciao ragazzi. ho un display 20x4 in cui visualizzo certi valori e faccio delle barre progressive a secondo dei valori ottenuti dai sensori... quelli che vorrei fare è tenere il valore visualizzato tutto sulla destra dello schermo tipo nella seguente visualizzazione:
( i trattini sono i pixel impegnati nella barra, e i numeri il valore del sensore e i puntini i pixel vuoti:
----------------100
----------------.39
----------------..2

come potete vedere vorrei tenere la scitta più a destra possibile, anche se essa sia composta da una sola ciffra ecc voglio he sia sempre visualizzata nel pixel più a destra possibile.... ho provato con : lcd.setCursor(0,0) ma non ho ottenuto l' effetto che volevo... come posso riuscire nel mio intento?

I display LCD non sono editor visuali per cui devi gestire tutto via software, se cioè vuoi scrivere allineato a destra devi realizzare il codice che lo faccia.

La funzione lcd.setCursor(Y,X) posiziona il cursore (cioè la cella dove sarà scritto il successivo carattere) alle coordinate Y,X, considerando che 0,0 corrisponde all'angolo in alto a sinistra.
Quindi in un display 20x4 i 4 vertici sono:

0,0.................0,19
.......................
3,0..................3,19

Per cui per scrivere sulla 1a riga allineato a DX devi:

  1. calcolare quanto è lunga la stringa che devi scrivere (nel tuo caso "100" sono 3 caratteri)
  2. posizionarti su (Y,LUNGHEZZA_RIGA-LEN(STRINGA)) --> 0,(19-3) --> lcd.setCursor(0,16)
  3. scrivere "100"

ecc..

Se é un numero non devi convertrlo in stringa ma mettere il cursore sulla posizione del primo numero (le centinaia) e controllare se il numero é maggiore di 100, 10 o minore e stampare dei spazi di conseguenza.

lcd.setCursor(Y,X)
if (numero <100) lcd.print(" ");
if (numero <10) lcd.print(" ");
lcd print(numero);

Ciao Uwe

Bisogna vedere se i numeri sono tutti interi positivi. Nel caso di negativi e/o float, l'algoritmo non è così semplice :wink:

leo72:
Bisogna vedere se i numeri sono tutti interi positivi. ...

Interpreto la domanda cosí. Ciao Uwe

uwefed:
Se é un numero non devi convertrlo in stringa ma mettere il cursore sulla posizione del primo numero (le centinaia) e controllare se il numero é maggiore di 100, 10 o minore e stampare dei spazi di conseguenza.

lcd.setCursor(Y,X)

if (numero <100) lcd.print(" ");
if (numero <10) lcd.print(" ");
lcd print(numero);




Ciao Uwe

i n effetti era proprio quello che cercavo... che in caso di quante cifre sia il numero si posizioni di conseguenza il cursore... pensavo che c' era qualche istruzione apposita ma va bene anche così...
grazie mille per l' aiuto..
ps: i numeri vanno da 0 a 100 e sono tutti positivi interi... :slight_smile: