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 :) , 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 ;)

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 ... ::)

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 :D :D :D

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 :D

Guglielmo

Si, beh, infatti, ma gli ho anche detto come si usa ;) (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