Bonjour je suis novice avec arduino et je cherche à modifier la valeur PWM de deux leds en une ligne de code via le moniteur serie exemple du code envoyé : 150,255 , avec virgule espace ou rien ca me va.
Après avoir lu les bonnes pratiques du forum francophone, il faudra mettre le code de ton premier post entre balises comme expliqué dans les bonnes pratiques puis tu pourras regarder ce tuto
Et puis pour distinguer le premier nombre du second ce serait quand plus malin de mettre un séparateur. Cela évitera les plantages si tu oublies les zéro devant les nombres à 1 ou 2 chiffres.
Bonjour, merci pour les conseils le code fonctionne en changeant le test , je me demande quand même si c'est la bonne méthode ou si il y a pas une solution plus simple.
Non la bonne méthode c’est de lire les données petit à petit quand elles arrivent - et ce serait mieux d’envoyer un ‘\n’ à la fin pour séparer les valeurs. Ça permet de se synchroniser sur une bonne trame. Séparer les valeurs par une virgule ou espace serait aussi une bonne idée
int pwm1 = 0;
int pwm2 = 0;
const String donneesSeperateur = ",";
String inputString = ""; // a String to hold incoming data
bool stringComplete = false; // whether the string is complete
void setup()
{
Serial.begin(115200);
// reserve 200 bytes for the inputString:
inputString.reserve(200);
}
void loop()
{
if (stringComplete)
{
Serial.println("Parametres recus : " + inputString);
commandeTraitement(inputString);
inputString = "";
stringComplete = false;
}
}
void commandeTraitement(String & commande)
{
// Premier paramètre
String parametre = commande.substring(0, commande.indexOf(donneesSeperateur)); // Séparation de commande au séparateur
pwm1 = parametre.toInt();
Serial.println("PWM1 = " + String(pwm1));
// Deuxième paramètre
parametre = commande.substring(commande.indexOf(donneesSeperateur)+1); // Séparation de commande depuis le séparateur +1 jusqu'à la fin
pwm2 = parametre.toInt();
Serial.println("PWM2 = " + String(pwm2));
}
void serialEvent() {
while (Serial.available()) {
// get the new byte:
char inChar = (char)Serial.read();
// add it to the inputString:
inputString += inChar;
// if the incoming character is a newline, set a flag so the main loop can
// do something about it:
if (inChar == '\n') {
inputString.trim();
stringComplete = true;
}
}
}
C'est assez simple.
Tu peux le tester, manuellement, en introduisant tes 2 valeurs dans la ligne de commande du moniteur à 115200, données séparées par une virgule (const String donneesSeperateur = ",";)
Les valeurs s'affichent dans le moniteur
Parametres recus : 150,255
PWM1 = 150
PWM2 = 255
Cette méthode de séparation des paramètres est valable que s'il n'y a que 2 paramètres, avec plus, il faudra splitter les données.