Go Down

Topic: Convertir string to int (Read 1 time) previous topic - next topic

zerr0s

Bonjour,

Il y a quelque temps je me suis mis en tête de faire une veilleuse pour la chambre de ma fille. J'ai un capteur de couleur (ColorPal) me permettant de choisir la couleur et suivant la couleur choisi j'allume une led RVG (j'en mettrai 4 au final).

J'ai réussi jusqu'à présent à capter la couleur en appuyant sur un bouton pour activer la capteur et à allumer la led. Jusqu'ici ça fonctionne impec.
Ce que je voudrai faire maintenant, c'est vérifier la couleur capter pour exécuter l'action de baisser le niveau des différentes couleurs.

Exemple:
Si je capte 00 -> je baisse la couleur rouge
Si je capte 100 -> je baisse la couleur bleu
Si je capte 200 -> je baisse la couleur vert

Le souci, c'est que le capteur me renvoi un string sous cette forme: XXX
Exemple pour les 3 couleurs. Je récupère les valeurs avec sscanf:
Code: [Select]
sscanf(rByte, "%x %x %x", &xx, &yy, &zz)
Serial.print(xx);
Serial.print(" ");
Serial.print(yy);
Serial.print(" ");
Serial.print(zz);
Serial.print("\n");

ce code affichera par exmple sur la console: 54 02 241

Comment puis-je gérer le traitement avant d'envoyer les valeurs à la led ?

J'espère que vous pourrez m'aider. Je ne suis pas encore ultra performant en programmation.

skizoh

Bonjour, bon cava ton problème n'à rien de sorcier, si j'ai bien compris tu a xx yy et zz en format string et tu veux les récupérer en int?

Skizo !

skizoh

voila =)

Code: [Select]

String inString = "";    // string to hold input

void setup() {
  // Initialize serial communications:
  Serial.begin(2400);
}

void loop() {

    String inString ="380";



      Serial.print("Value:");
      Serial.println(inString.toInt());
      Serial.print("String: ");
      Serial.println(inString);

}


adaptation d'un programme exemple de IDE 1.0, regarde d'abord les exemples avant ;)


Skizo !

skywodd

Bonjour,

Je ne vois pas ou est le probléme ?

Tu as déja converti la string en int avec sscanf !
Il ne te reste plus qu'as envoyer tes données aux led ...

analogWrite() ?
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

skizoh

pas faut sa remplace direct tes string par des int sinon, même pas besoin de string ^^'

Skizo !

zerr0s

mais si je fais des opérations de type :
xx = xx - 1

Je ne risque pas de me prendre une erreur du fait que ce que me renvoi sscanf est de la forme 000 ?

En gros si je fais : 015 - 1 , c'est censé me renvoyer 014 ?

Je testerai ce soir en rentrant à la maison :)

skizoh

si vraiment sa déconne tu passe de string a int tu traite et tu remets en string après en rajoutant le  0 devant si il en manque un..

Il va falloir mieux nous éxpliquer ton problème la :s

Skizo !

Go Up