Ciao a tutti, mi si è presentato un problema, che non essendo ancora molto pratico del ide di arduino, mi lascia un po' perplesso.
Ho un sensore umidità e temperatura (DH22) che mi da dei dati in float
float h = dht.readHumidity(); // Legge umidità da DHT
float t = dht.readTemperature(); // Legge temperatura da DHT
Io però devo creare una string Buffer, per scriverla poi in un botto su file sd.
Però alla fine la temperatura e umidità mi risultano nel file sempre con lo ctesso valore e cioè 10 e 1
Come mai ?
Se tolgo il DEC allora non riesco a compilare.
Ciao, ti sei assicurato prima stampando su seriale le due variabili h e t se non restituiscono proprio di loro sempre 10 e 1 e quindi il problema sta nella lettura dei 2 sensori?
Certo.. i dati li "stampo" anche su un display.
Se faccio un Serial.print(t, DEC) funziona... se scrivo su file con .print funziona, non funziona la conversione da float a string... o meglio... non riesco io a farla funzonare.
Sicuramente proverò... ma mi potete spiegare la funzione ?
Ma per convertire in string un numero float, non cè una funzione semplice.
Il serial.print funziona in qualsialsi modo.... non è possibile fare una cosa del genere Buffer += Serial.print(t) ? Un po' assurdo lo so.. ma ....
la libreria della gestione della seriale comprende quello che fà dtostrf ma il metodo non è disponibile mentre usando direttamente dtostrf fai la stessa cosa senza complicatri tanto la vita.
bè se pensi che il linguaggio C non ha implicito il concetto di stringa e che i numeri float per arduino sono un pò "magia nera" allora non sembra più così strano
Si.. capisco.. infatti per il C una stringa è un array di char... =(
Vi aggiorno questa sera.. ma se qualcuno ha qualche altra idea.. è benvenuta..
Non vorrey fare tanti myfile.print() per scrivere una semplice stringa composta da dei dati.
Grazie a tutti, ho risolto il problema con le info che mi avete dato, ma passando per delle variabili come mi avevate suggerito mi usciva una strnga strana. Quindi ho dovuto modificare il codice in questo modo.