Conversione da Char a Float/Int

Buonasera a tutti, prima di cominciare vi dico subito che so bene che questo topic è già stato trattato, ma nessuno di quelli che ho trovato è servito a risolvere il mio problema. Allora in questo programma io ricevo un messaggio con delle parole e un numero, ricevuto il messaggio lo inserisco in una stringa e creo una sub stringa comprendente soltanto il mio numero. ora questa stringa la inserisco in un char. esempio: char nome=5,50 Come faccio a portare questo numero in una Int o in una float? non è neccessario che il numero sia per forza 5,50 mi accontento anche di 5. Sottolineo che il numero non è assolutamente fisso, questo è un esempio.

 String cmd=sms_text; //inserisco il testo in una stringa
          String mystr=cmd.substring(86,91); //creo una sub-stringa con solo il testo utile (credito)
          mystr.toCharArray(val,6); //inserisco la sub-stringa in una variabile di testo

Grazie comunque in anticipo, Buona serata Alessandro

beh... char nome=5,50 è più che altro un riassunto di errori... char può contenere solo un carattere... per assegnarlo dovresti usare gli apici singoli... per i decimali si usa il punto e non la vrigola... a parte questi dettagli, se usi la classe String ci sono dei metodi fatti apposta per convertire in int o float https://www.arduino.cc/en/Reference/StringToInt https://www.arduino.cc/en/Reference/StringToFloat

mystr.toCharArray(val,6) Quindi val è un char val[ 6 ]; ?? magari mettere tutto il codice coinvolto non è male !!

Se val contiene "5.50" per convertirlo basta atoi() oppure atof()

http://www.nongnu.org/avr-libc/user-manual/group__avr__stdlib.html

Si avete ragione scusate,

char val[6];
Char sms_text[150];

sms_text viene riempita da un messaggio della wind che mi comunica il credito residuo le promozioni ecc… Ora io taglio fuori tutto quello che non mi interessa ottenendo una sub stringa contenente solo un numero come ad esempio 5,50 io questo 5,50 lo devo usare in una if(5,50<=1).
Ho provato a usare atoi ma non so per quale motivo ci mette un po’ di tempo a darmi in uscita il valore giusto, mi spiego, in uno sketch dove fa solamente questo procedimento dopo aver usato il comando atoi esce da una if e mi stampa il valore contenuto dentro la int ma prima di stamparmi il valore esatto mi stampa una decina di volte “0”. Deve essere una cosa istantaneo siccome immediatamente dopo devo fare quella famosa “if(5,50<=1)”
Scusate se non metto lo sketch ma ora sono a scuola e non ce l’ho dietro, se con la mia spiegazione non si capisce oggi ve lo posto

Ciao,
secondo me dovresti prima rimpiazzare la “,” con il “.” nella tua stringa e poi provare ad utilizzare il metodo .toFloat() della classe String.
Quindi un esempio potrebbe essere:

String importo = “0,50”;
float risultato = 0.0;

void loop() {
importo.replace(",",".");
risultato = importo.toFloat();
if ( risultato <= (float)1.0 ) {
//inserisci il tuo codice
}
}

I notazione decimale che ho utilizzato e la tipizzazione del dato…

risultato = 0.0
if ( risultato <= **(float)**1.0 ) {

non sempre sono necessari, ma ottimizzano l’esecuzione del codice.

ok fantastico, ci provo a lavorare verifico che funzioni e vi dico :)

Funziona!! fantastico grazie mille a tutti! buona serata, Alessandro