Bonjour Pierre,
Alors j'ai remplacé mais while par if, cela me permet de changer d'état à chaque comande, mais ma diode ne clignote pas en état 3.
int b=13;
const unsigned long BLINK_INTERVAL1 = 500;
const unsigned long BLINK_INTERVAL2 = 1000;
void setup() {
pinMode(13,OUTPUT); // MOC3041 negatif
digitalWrite(b,LOW);
Serial.begin(9600); //débute la communication avec le moniteur série
Serial.println("*********\nListe des ordres\n*********");
}
void loop() {
String chaine = ""; // création d'un String vide
if (Serial.available()) { //teste s'il y a une saisie en attente
//lecture de la saisie
while (Serial.available()) { //tant que caractères en attente.
delay(10); //petit délai de lecture
char c = Serial.read(); //on lit le message
Serial.println (c);
if (c != 10 && c != 13) { //nettoyage de la chaine
chaine += c; //on ajoute le caractère
}
}
//test de la saisie
if (chaine == "1") {
Serial.println("Marche");
digitalWrite(b,HIGH);
}
if (chaine == "2") {
Serial.println("Arrêt");
digitalWrite(b,LOW);
}
if (chaine == "3") {
Serial.println("Clignote");
digitalWrite(b,LOW);
delay(200);
digitalWrite(b,HIGH);
delay(200);
}
}
}
Commencez par sortir votre variable "chaine" de la fonction loop() pour la placer en haut de votre application, avant le setup(). Ainsi, elle ne sera pas réinitialisée à chaque passage dans la loop().
j'ai placé " String chaine = ""; // création d'un String vide" tout en haut de mon code avec le "int b=13"
Là, mon 1er ordre est reconnu et plus les autres!