Problema visualizzazione su sms valore ingresso analogico A0

Ciao, chiedo aiuto per la risoluzione di questo inconveniente:
tramite il codice sotto invio via sms il valore letto dall' ingresso analogico A0.

RIvevo l'sms però vedo un valore strano letto dall' ingresso A0 es:
Temperature: -12321.12133
Ho sbagliato qualcosa sull'impostazione della variabile t alla riga??

  (sms.SendSMS("numerocell",string));

Se stampo il valore delle temperatura con serialprint vedo il valore correttamente.

Grazie per l'aiuto

#include "SIM900.h"
#include <SoftwareSerial.h>
//If not used, is better to exclude the HTTP library,
//for RAM saving.
//If your sketch reboots itself proprably you have finished,
//your memory available.
//#include "inetGSM.h"

//If you want to use the Arduino functions to manage SMS, uncomment the lines below.
#include "sms.h"
SMSGSM sms;

//To change pins for Software Serial, use the two lines in GSM.cpp.

//GSM Shield for Arduino
//www.open-electronics.org
//this code is based on the example of Arduino Labs.

//Simple sketch to send and receive SMS.

int numdata;
boolean started=false;
char smsbuffer[160];
char n[20];
char string[160];
int LM35=0;
float t;


void setup() 
{
  //Serial connection.
  Serial.begin(9600);
  Serial.println("GSM Shield testing.");
  //Start configuration of shield with baudrate.
  //For http uses is raccomanded to use 4800 or slower.
  if (gsm.begin(2400)){
    Serial.println("\nstatus=READY");
    started=true;  
  }
  else Serial.println("\nstatus=IDLE");
  
};

void loop() 
{
  if(started){
    
     t= analogRead(LM35)*0.488;  
  sprintf(string,"Temperature: %d.%d", t); 
 
    
    if
         (sms.SendSMS("numerocell",string));
          Serial.println("\nSMS sent OK");
    
    //Read if there are messages on SIM card and print them.
    if(gsm.readSMS(smsbuffer, 160, n, 20))
    {
      Serial.println(n);
      Serial.println(smsbuffer);
    }
    delay(60000);
  }
};

ankamacha:
Se stampo il valore delle temperatura con serialprint vedo il valore correttamente.

Stampando "string" dopo la conversione con sprintf?

se provo a lanciare un normale sketch di acquisizione e stampa dell' ingresso A0 vedo il valore corretto con
Serial.println(t); quindi escludo il problema sull' ingresso A0
se provo da questo sketch il valore di t dell' sms è stranissimo...una serie di numeri che non capisco
dove sbaglio?
grazie

Andiamo per gradi.
Spedendo un sms creato da te con una temperatura qualunque dentro (esempio "24.2") ti arriva correttamente oppure no?

adesso ho provato e inspiegabilmente funziona! non capisco proprio cosa poteva essere!

  sprintf(string,"Temperature: %d.%d", t,2);

se volessi inviare 2 valori di temperatura dovrei creare 2 variabili string o posso mettere tutto in una?

es. voglio che l' sms riporti : Temperatua 1 : 20 Temperatura 2 :24

cosi potrebbe andare o devo per forza creare 2 string?

  sprintf(string,"Temperatura1: %d.%d", t1,2 "Temperatura2:%d.%d", t2,2);

Grazie

ankamacha:
adesso ho provato e inspiegabilmente funziona! non capisco proprio cosa poteva essere!

  sprintf(string,"Temperature: %d.%d", t,2);

Molto probabilmente ti eri scordato un parametro.
Difatti rivedendo la prima versione del comando, tu avevi scritto:

sprintf(string,"Temperature: %d.%d", t);

devo per forza creare 2 string?

  sprintf(string,"Temperatura1: %d.%d", t1,2 "Temperatura2:%d.%d", t2,2);

Grazie

Dovresti metterlo così:

sprintf(string,"Temperatura1: %d.%d", "Temperatura2:%d.%d", t1,2 ,t2, 2);

GRAZIE LEO!

Ringraziami se funziona, prima provalo. :stuck_out_tongue:

Ho provato ma non funziona, se provo a stampare le due temperature su sms vedo solo:
Temperatura1: 266.0 un valore completamaente fuori... forse è un problema di sintassi?

Ho risolto con: strcat andando a concatenare le stringhe e successivamante convertendo il valore delle variabili temperatura in char infine ho richiamato message per l'invio sms.
es. ottengo Temperatura1 val=22 Temperatura2 val=25

 string[0]='\0';
 
   strcat(string,"Temperatura1, VAL=");
   itoa(temperatura1,temp1convertita,10);     //converto il numero della temperatura in char
   itoa(temperatura2 ,temp2convertita,10);   //converto il numero della temperatura in char
   strcat(string,temp1convertita);
   strcat(string,"Temperatura2, VAL=");
   strcat(string,temp2convertita);
 
   sms.SendSMS(numero cell,message);

Ieri poi sono stato assente ma mi hai anticipato, avevo anch'io pensato alla stessa soluzione. Bene, mi fa piacere tu abbia risolto

Grazie Leo! Sei sempre molto disponibile ad aiutare. E' anche grazie a te se sto imparando qualcosa di Arduino, sistema fantastico!

Una cosa che però non riesco a fare è avere il valore con 2 cifre decimali es:
VAL= 10.23
Sull sms mi arriva solo il valore 10. Come posso fare per risolvere? La variabile l'ho dichiarata float

Come posso fare?
Grazie

string[0]='\0';
 
   strcat(string,"Temperatura1, VAL=");
   itoa(temperatura1,temp1convertita,10);     //converto il numero della temperatura in char
   itoa(temperatura2 ,temp2convertita,10);   //converto il numero della temperatura in char
   strcat(string,temp1convertita);
   strcat(string,"Temperatura2, VAL=");
   strcat(string,temp2convertita);
 
   sms.SendSMS(numero cell,message);

Hai provato a separare la parte intera dal decimale e poi ricreare la stringa concatenando il valore intero, un punto e il valore decimale?

ho risolto utilizzando la funzione dtostrf poichè itoa vale solo per gli interi