Itoa e sensore di temperatura

Buonasera sono nuovo del forum, ho realizzato del codice per gestire un climatizzatore con modulo gsm. Adesso inizia il problema di leggere la temperatura ed inviarla per sms, o per lo meno la shield risponde ma con dei valori a caso e non printa sul messaggino le stringhe "strcpy e strcat" mentre dalla serial.print leggo il valore corretto di temperatura. Sapreste mica indicarmi dove sbaglio? di seguito riporto il codice utilizzato

void Temp()
{
  if(started){
      
  char strmsg[20];
  char str[20];

    float chk = DHT11.read(DHT11PIN); 
    Serial.println((float)DHT11.temperature, ); 
    itoa ((float)DHT11.temperature, str,4); 

      strcpy (strmsg, "La Temperatura è: " );
      strcat (strmsg,str);
      
      

    sms.SendSMS("12345678912" , str); 
    gsm.SimpleWrite("AT+CMGD=1,4\r");     
  
    clearbuffer();

}
}

grazie mille per il vostro aiuto

You might have more success if you ask in the appropriate language section of the forum, which I guess would be Italiano.

Intanto cos'è che esattamente ricevi via SMS? Potresti scrivere qui cosa ricevi ad esempio?

Poi aumenterei strmsg, 20 caratteri sono pochi visto che già la prima stringa ("La temperatura è: ") è lunga 18 caratteri (più il carattere \0 terminatore, quindi 19).

inoltre il DHT11 non emette decimali, quindi il float e’ inutile usarlo, memoria e rallentamenti sprecati

E poi la itoa() come terzo parametro chiede la base di conversione, 16 sarebbe esadecimale, 8 ottale, 10 per base dieci. Non è la precisione (penso che con 4 volevi intendere quattro decimali). itoa: http://www.cplusplus.com/reference/cstdlib/itoa/?kw=itoa

potresti usare la dtostrf: http://dotnetside.org/blogs/pixel/archive/2013/03/12/arduino-utilizzo-di-dtostrf-e-sprintf.aspx

Per non parlare del fatto che c'è un errore nel listato (manca il numero dei decimali), anche se probabilmente il compilatore lo porta a zero:

Serial.println((float)DHT11.temperature, );

no,
di base se non si mette vengono stampati 2 decimali, ma saranno sempre x.00 con questo sensore, quindi inutile

grazie mille per i consigli scusase il ritardo nelle risposte ma ero in ferie 8) 8) 8) 8) 8) 8) 8) 8) ora provo e vi faccio sapere

Buongiorno ARDUINIANI ieri ho provato la funzione dtostrf e funziona il sensore mi rimanda indietro tramite sms la temperatura letta, ma c'è un problema. Facendo una serial print del dht11 vedo la temperatura che varia da 24 a 25 gradi ma nel momento che riceve l'sms schizza a 39? sapreste indicarmi perchè?

grazie mille