Buongiorno a tutti,
mi sono programmato il display in oggetto per poter visualizzare, al momento una temperatura.
Ho provato a scrivere (anche scopiazzando qua e la) un codice, il quale rilevando una tensione dall'ingresso A0 (collegato un LM35) dovrebbe trasmettere la temperatura al mio display.
Sicuramente trasmette, perche vedo apparire dei numeri nella casella associata, ma son dei numeri a caso.
Non riesco a capire cosa stia trasmettendo al display.
Vi allego il codice, magari qualche buon'anima, mi da un paio di dritte ?
Sul Nextion l'oggetto che contiene la stringa è definito carattere o numerico? Perché se è numerico è normale che vedi valori "strani". Se invece è correttamente testo è di una lunghezza sufficiente a contenere la stringa o no?
Stai usando %i sinonimo di %d quindi numeri interi, tu passi un float, normale legge strano
Purtroppo non puoi usare %f, non attivo su arduino
Prendi temperatura e mettilo in un int, tanto a te non servono i decimali
Ciao,
l'oggetto sul Nextion è impostato come testo, in merito alla lunghezza si riescono a visualizzare cifre di 6 caratteri.
Invece per quanto riguarda le informazioni fornite da @nid69ita e @docdoc che ringrazio, devo dire che ancora non mi hanno (non sono più che altro) risolto il problema, però visualizzo numeri più veritieri.
Visualizzo valori intorno ai 56, che ovviamente non sono corretti inoltre non sono stabili continuano a variare.
Posto la parte di codice che ho modificato:
void updateNextion() {
unsigned int v = analogRead(A0);
float coeff = 5000.0 / (1023.0 * 10.0);
int temperatura = v * coeff;
//char str[3];
char sTemp[6];
//sprintf(str, "%02i", temperatura);
dtostrf(temperatura, 5, 1, sTemp);
lbAnalogico.setText(sTemp);
}
Ciao,
si ho effettuato la prova e sul serial monitor mi ritrovo i dati di temperatura corretti.
Data la mia poca praticità non riesco propio a capire come mai al display vengo inviati dati errati.
Ho provato a mettere la variabile “temperatura” sia float che int, uguale per la variabile “coeff” sia float che int.
Sul display vengono visualizzati valori non reali.
Per me c'è qualche problema nelle righe del codice dove vado a prendere la mia variabile "temperatura" e la invio al display.
Ci sto perdendo via la testa, ma non sono ancora riuscito a risolvere.
Ciao, avevo seguito tutte le tue indicazioni, i tre errori che mi hai giustamente rimarcato sono ripostati perché dopo aver provato con le tue correzioni ero tornato ancora indietro.
Comunque sia, ancora non riesco a visualizzare le temperatura corretta sul display nonostante abbia:
riprogrammato il display
provato altri sketch
Sul serial monitor, continuano ad essere corrette.
Secondo voi, cosa potrebbe essere ?