Go Down

Topic: [DOMANDA] testo scorrevole (Read 943 times) previous topic - next topic

May 11, 2013, 12:32 am Last Edit: May 11, 2013, 12:34 am by stefanodp91 Reason: 1
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

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

pelletta

E dai Uwe, è appena arrivato

BaBBuino

Ha fatto bene, bisogna picchiarli da piccoli! :D

pablos

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

Code: [Select]
lcd.scrollDisplayLeft();
lcd.scrollDisplayRight();
no comment


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:

Code: [Select]
 
#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
}

PaoloP

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

Testato


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

Code: [Select]
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.
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

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 http://arduino.cc/forum/index.php?PHPSESSID=e697cc727bf44d23d2edd8fbfd228b78&topic=136483.0

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.



AvrDudeQui front end per avrdude https://gitorious.org/avrdudequi/pages/Home

pablos

#9
May 11, 2013, 10:55 pm Last Edit: May 11, 2013, 10:57 pm by pablos Reason: 1


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

Code: [Select]
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 ....
no comment

Testato

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
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

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

Go Up