[DOMANDA] testo scorrevole

In primis salve a tutti.
Ho appena collegato un display 16x2 (cinese, non ho nemmeno trovato in giro il datasheet) che ho collegato su una board Arduino UNO.
Il display funziona correttamente (in modalità 4 bit).
La mia domanda è: come posso fare a far scorrere il testo in una sola delle due righe?
ho fatto una bozza di codice ma si muovono entrambe le righe contemporaneamente XD

Si muovono in contemporanea perché lo hai programmato cosí.

Come giá detto in precedenza non siamo maghi, telpati, indovini o veggenti e la sfera di cristallo dove leggere il Tuo sketch non abbiamo.

Ciao Uwe

E dai Uwe, è appena arrivato

Ha fatto bene, bisogna picchiarli da piccoli! :smiley:

nella libreria LiquidCrystal.h trovi già le istruzioni che fanno questo

lcd.scrollDisplayLeft(); 
lcd.scrollDisplayRight();

uwefed:
Si muovono in contemporanea perché lo hai programmato cosí.

Come giá detto in precedenza non siamo maghi, telpati, indovini o veggenti e la sfera di cristallo dove leggere il Tuo sketch non abbiamo.

Ciao Uwe

hai ragionissima scusami.
ecco qui lo sketch che ho fatto:

#include <LiquidCrystal.h>

String textMsg="luminosita' rilevata";
int analogInPin = A0; // fotoresistenza
int sensorValue = 0; 
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  Serial.begin(9600);
  pinMode(analogInPin, INPUT);
  lcd.begin(16, 2);
  lcd.print(textMsg); //da fa scorrere sulla prima riga
}

void loop() {
  for(int i = 0; i < textMsg.length(); i++) {
    lcd.scrollDisplayRight();//scroll a destra
    delay(150);//tempo di scrolling
  }

  lcd.setCursor(0, 1);
  lcd.print(analogRead(analogInPin));//sta stampare fisso sulla seconda riga
  delay(1000);//tempo di attesa a fine loop
}

Non è possibile usando le funzioni della libreria perché il comando è codificato nel controller del display e muove entrambe le righe.
Puoi fare però una cosa del genere
https://gist.github.com/RC1140/3299197

pablos:
nella libreria LiquidCrystal.h trovi già le istruzioni che fanno questo

lcd.scrollDisplayLeft(); 

lcd.scrollDisplayRight();

Come già dettonon funziona, perche in questo modo shifti tutta la memoria del display, mentre lui chiede di avere il primo rigo fisdo ed il secondi scorrevole.

Io ho avuto la stessa necessità al tempo, ma il mio è un display grafico mai fatto una cosa sul display a caratteri.
Questo post potrebbe aiutarti a fare la riga scorrevole Arduino Forum

Per la riga scorrevole devi stampare una variabile di tipo array di stringhe detta buffer, la dimensione di buffer deve essere di 16+1 caratteri, il contenuto di buffer lo devi decidere tu , se la riga deve contenere strOut = "0123456789ABCDEF" (16 caratteri) dovrai riversare 16 caratteri nel buffer a partire dalla posizione 0 di strOut. La prossima volta es dopo un secondo il buffere deve essere riempito con il contenuto di strOut a partire dalla posizione 1, poi dopo un'altro secondo dalla posizione 2 e così via. Devi solo trovare il modo di prendere x caratteri dall'inizio strOut per metterli alla fine.

esempio del contenuto di buffer:
0123456789ABCDEF
123456789ABCDEF0
23456789ABCDEF01
3456789ABCDEF012
456789ABCDEF0123

Ciao.

Testato:

pablos:
nella libreria LiquidCrystal.h trovi già le istruzioni che fanno questo

lcd.scrollDisplayLeft(); 

lcd.scrollDisplayRight();

Come già dettonon funziona, perche in questo modo shifti tutta la memoria del display, mentre lui chiede di avere il primo rigo fisdo ed il secondi scorrevole.

ok ok non funziona ho capito non c'è bisogno che me lo dite in 10 ahahahahha... ma questo succede perchè gli utenti non postano mai uno straccio di sketch di quello che hanno già fatto quando fanno le domande.
comunque una modifica alla lib e lo fai ....

Sto decidendo se ripeterlo per la terza volta o no
Nessuna possibile modifica, lo si deve fare via sw.
Per libreria si può intendere tante cose ma credo sia sbagliato chiamare modifica una aggiunta di questo tipo alla liquid cristal

vi ringrazio per le risposte, vi farò sapere appena avrò risolto qualcosa :slight_smile: