Scorrimento testo su display LCD

Salve, devo far scorrere una scritta più lunga di 16 caratteri su un'unica riga di un display LCD 16*2. Ho provato già con metodi di risoluzione descritti in altre domande ma tutti prevedo l'utilizzo del delay. Siccome il mio programma deve fare più cose simultaneamente non posso permettermi di usare la funzione delay perchè mi "ferma" il programma.
Come posso fare? Grazie in anticipo per l'aiuto e buona giornata.

In aggiunta a quanto richiesto qui sopra da nid69ita, ti segnalo che, nella sezione in lingua Inglese, si può scrivere SOLO in Inglese ... quindi, per favore, la prossima volta presta più attenzione in quale sezione metti i tuoi post; questa volta esso è stato spostato, da un moderatore della sezione di lingua Inglese, nella sezione di lingua Italiana ... la prossima volta potrebbe venire direttamente eliminato.

Guglielmo

Ma mi sono già presentato

Va bene Grazie

Vero, scusa. Con il nuovo forum non è semplice vedere i tuoi post.

Non fa niente capita :wink:

Ciao, Giuseppe. Benvenuto! :slight_smile:
Devi usare millis(): Esempio culinario

Per esempio, per fare qualcosa ogni mezzo secondo e qualcos'altro ogni 3 secondi:

unsigned long t1=millis();
unsigned long t2=millis();

void loop()
{
if(millis()-t1>=500)
  {
  t1=millis(); // Oppure: t1+=500;
  fai_qualcosa();
  }

if(millis()-t2>=3000)
  {
  t2=millis(); // Oppure: t2+=3000;
  fai_altro();
  }

...
}

Ovviamente...
Grazie, correggo! :slight_smile:

Quindi applicandola al display LCD devo fare in modo che ogni tot di tempo la scritta scala di una posizione. Quale funzione mi permette di "scalare" di una posizione a scritta? Magari senza lasciare troppo spazio fra una scritta e l'altra perchè ho usato la funzione scroldisplaylleft() ma mi lascia troppo spazio.

Una volta che l'ho fatto, ho semplicemente riscritto spostato a sinistra. Per esempio:

lcd.setCursor(0,0); lcd.print ("      Buongiorno");
delay (500);
lcd.setCursor(0,0); lcd.print ("     Buongiorno ");
delay (500);
lcd.setCursor(0,0); lcd.print ("    Buongiorno  ");
delay (500);
lcd.setCursor(0,0); lcd.print ("   Buongiorno   ");
delay (500);
lcd.setCursor(0,0); lcd.print ("  Buongiorno    ");
delay (500);
lcd.setCursor(0,0); lcd.print (" Buongiorno     ");
delay (500);
lcd.setCursor(0,0); lcd.print ("Buongiorno      ");
delay (2000);

Qui ho messo semplicemente dei delay.
Gli spazi a destra servono per cancellare le lettere scritte precedentemente.

È vero potrei fare anche così. Grazie mille per l'aiuto

.:slight_smile:.

1 Like