conversion

bonjour
toujours debutant
un soucis de conversion, qui peut m’aider

 if (Serial.available()>0 ){
 
     potazim();          
     //Si un message a été reçu  faire ceci
     String a = (Serial.readString());  // Lit le message reçu et l'affiche sur le moniteur
     String  az= a.substring(1, 4);// extrait az
     String  el= a.substring(5, 8);// extrait el

    lcd.setCursor(0, 1);
    lcd.print(az);
    lcd.setCursor(5, 1);
    lcd.print(el);delay(100);
}

explications:
le sous programme potazim() me renvoi une valeur numerique
string a est envoyé par rs232 par un programme externe
le string az me renvoi une valeur char de “000” a “360”
le string el me renvoi une valeur char de “00” a “90”
mon soucis et je bute est que je voudrais faire un

if(az==la valeur de potazim()){
digitalwrite(relais,HIGH);
}

et le message me renvoi inpossible de comparer caractere et val
mon prof disait on aditionne pas les vaches et les cochons
si quelqu’un peut m"aider simplement
merci

Bonjour,

On peut utiliser la fonction stoi() qui convertit une "string" en "int".

if (stoi(az)== la valeur de potazim())

Au lieu d’essayer de comparer des Strings, transformez les chaînes de caractères qui sont dans vos strings en nombre ==> comme ce sont des entiers, cf la méthode toInt()

Sinon on déconseille d’utiliser cette classe String si votre programme est amené à s’étoffer ou doit tourner longtemps, on préfère les c-strings (tableau de caractères terminés par un caractère null)

merci bilbo83
j'ai essayé votre if(stoi(az)==Dir){
digitalWrite(2,HIGH);
}
mais je recois stio non declaré ??
comme dit precedement debutant dans certaines fonctions avancé (autodidacte)

essayez d'imprimer az.toInt() et el.toInt() - cf ma réponse ci dessus pour le lien vers la documentation

String a = Serial.readString();  // Lit le message reçu et l'affiche sur le moniteur
String  az= a.substring(1, 4);// extrait az
String  el= a.substring(5, 8);// extrait el
int azEntier = az.toInt();
int elEntier = el.toInt();
Serial.print(F("AZ VAUT: ")); Serial.println(azEntier);
Serial.print(F("EL VAUT: ")); Serial.println(elEntier);

si vous avez les bonnes valeurs dans les Strings alors ça va extraire les entiers

Notez que ce n'est pas la meilleur façon de lire de port série, vous n'êtes pas garantit d'avoir tout le message... et vous feriez mieux de tester la longueur du message pour extraire az et el et vous assurer qu'il y a bien le bon nombre de caractères attendus

Si vous voulez comprendre comment bien écouter le port série (ou gérer un flux asynchrone genre keypad) vous pouvez jeter un oeil à mon petit tuto sur le sujet

merci a tous pour votre aide
c'est tout bon
amities a tous et bon bout d'an