Buonasera a tutti,
premetto che sono un principiante di arduino.
Ho realizzato un circuito con un sensore di temperatura che mi rileva correttamente la temperatura
A questo ho aggiunto l'ethernet shield per arduino per inviare la temperatura ad un mio server.
Tutto funziona perfettamente.
L'unico problema che non riesco a risolvere è il seguente:
dichiaro la variabile temp come float e leggo la temperatura del sensore
temp= sensors.getTempCByIndex(i);
ora mi connetto al server e passo la temperatura
client.println("GET /arduino.php?temp="+ temp);
mi da errore dicendomi: invalid operands of types 'const char [23]' and 'float' to binary 'operator+'
se faccio
client.println("GET /arduino.php?temp="+ int(temp));
funziona, ma io voglio passare al server anche i decimi di grado!!!!!
Perchè come variabile in get non si possono passare valori float?
grazie mille a tutti
l'opratore di concatenazione (il +) a quanto pare in supporta gli int ma non i float. Quindi la conversione da float a stringa la devi fare a mano con un comando apposito:
Oppure moltiplichi il float con 10 o 100 a secondo del numero di decimali che hai, aggiungi 0,5 e converti in INT. La pagina che riceve il dato divide di nuovo per 10 o 100.
Ciao Uwe
grazie a tutti.
tutte le vostre risposte funzionano.
prima di leggerle avevo risolto il problema nel seguente modo funzionante:
int temp1 = (temp - (int)temp) * 100;
sprintf(ascii,"GET /arduino.php?temp=%0d.%d", (int)temp, temp1);
come la trovate questa soluzione?
grazie