Conversion depuis le type String vers un autre type

Bonjour à tous,

Je galère comme un porc car je n'arrive pas à passer d'un type String à un autre type. Je m'explique : je veux allumer une led par une commande que j'envoie depuis une session TCP. Par exemple je me connecte avec Putty sur l'adresse/port de ma carte et je tape la commande "HIGH 9" ce qui veut bien évidement dire que j'allume la led branchée en 9.

Je stocke me frappe dans un objet string initialisé par String mastr = "";

Puis le programme se déroulant dans mastr je retrouve "HIGH 9". Je décortique ma chaine, je traite facilement le cas HIGH ou LOW mais impossible de convertir "9" en integer ou n'importe quoi d'autre.
Je récupère "9" en faisant : ledPin = mastr.substring(mastr.indexOf(" ")+1);
Bien sûr j'ai déclaré String ledPin = "";
Dans ledPin j'ai bien vérifié que j'ai la chaine de caractères "9".
Ensuite impossible de faire la conversion int(ledPin); j'ai le message : invalid cast from type "String" to type "int"
Même chose avec char() ...

Merci d'avance de votre aide car je ne m'en sors pas ...

Bon travail à tous.

Bonjour, utilise la fonction "atoi" (cherche sur google) :wink:
exemple =

 Serial.println(ao_1_val);
   char ao_1[5];//pour convertir le string en int je passe par = string > char > int 
   ao_1_val.toCharArray(ao_1, 5);
   analogWrite(3,atoi(ao_1));

Bonjour,

Si le nombre est compris entre 0 et 9 :

String sledPin = mastr.substring(mastr.indexOf(" ")+1);
int ledPin = sledPin[0] - '0';

Sinon avec atoi() comme te l'as proposé cutprod.

Merci à vous deux pour vos propositions.

Si je convertis ledPin en integer j'obtiens la valeur ASCII, il faut alors que je passe par un tableau pour obtenir la valeur que je souhaite.
Dans tous les cas il faut que je fasse la conversion en 2 étapes.
Merci encore et bon travail à tous.