comando per lcd 16x2

Buonasera a tutti, ho una domanda veloce veloce (anche banale).
Devo fare in modo che sul display lcd visualizzi una scritta seguito poi da una variabile e poi di nuovo un testo.

...
float t=0;
...
void loop(){
...
lcd.print("Temp: ",t,"°C");
...
}

Vorrei visualizzare la seguente scritta sul display lcd, ma non mi ricordo il comando per poter far seguire "scritta"+variabile+"scritta".
Il comando che ho scritto io è errato e lo so :slight_smile: , qualcuno può aiutarmi? grazie.

Fai 3 lcd.print di seguito. Non guadagni nulla combinando testo e variabili, perché il tempo impiegato per inviare i dati al display è proporzionale comunque al numero di caratteri inviati, e le soluzioni possibili sono solo peggiorative. Pensa, piuttosto, se t deve essere veramente float, oppure ti conviene usare un int moltiplicando la temperatura per 100 (risparmi 2 byte e la pesantezza e l'imprecisione dei float). Se è float, devi anche pensare alla formattazione per la visualizzazione.

Datman:
... Se è float, devi anche pensare alla formattazione per la visualizzazione.

... perché ? ... è cosa che fa la print(), anzi, puoi anche specificare quanti decimali stampare :wink:

Guglielmo

AnYmUs:
Devo fare in modo che sul display lcd visualizzi una scritta seguito poi da una variabile e poi di nuovo un testo ...

... come ti è stato detto, posizioni il cursore ad inizio riga e poi fai tre print, una per la stringa "Temp: ", un altra per la variabile t ed infine, una per la scritta " C°" ... occhio però perché non son osicuro che il carattere '°' sia implementato nel set di caratteri del LCD ... ::slight_smile:

Guglielmo

Dovrebbe essere il carattere 223, anche se è un quadratino. Volendolo un po' più aggraziato, bisogna definirlo.

Datman:
Dovrebbe essere il carattere 223, anche se è un quadratino. ...

Infatti, ricordavo bene che c'era qualche altra cosa .... si, un quadratino, non tanto bello esteticamente, ma ok ... tanto è piccolino :smiley: :smiley: :smiley:

Guglielmo

Sì. Una volta l'ho ridefinito così:

0b00100
0b01010
0b00100

Beh, una cosa del genere:

...
byte bmpGradi[8] = {
  B00000,
  B01000,
  B10100,
  B01000,
  B00000,
  B00000,
  B00000,
  B00000
};
const byte icoGradi = 1;
...
void initLcd() {
  lcd.init();
  lcd.backlight();
  lcd.clear();
  lcd.createChar(icoGradi, bmpGradi);
}
...
  lcd.setCursor(3, 0);
  lcd.print(temp, 1);
  lcd.write(icoGradi);
...

... beh ... Datman lo aveva scrittto nella sua parte "essenziale", ma è praticamente lo stesso simbolo :smiley:

Guglielmo

Si, beh, infatti, ma gli ho anche detto come si usa :wink: (tra l'altro è una porzione di mio codice per un progetto di monitoraggio temperatura dell'inverter fotovoltaico..)

... ho rimosso io un paio di post inutili per la discussione.

Guglielmo

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.