C'est normal que le clignotement de la led ne s’arrête pas après 5 fois, car le for sera à nouveau executé, principe de la boucle loop.
Si tu souhaites faire seulement une exécution de la boucle for, il faut modifier le programme avec un test de type if compteur > 5 ne rien faire sinon exécuter boucle ou passer par un boolean, voir code ci-dessous.
@+
const int boutonpin = 2;
const int ledpin = 13;
boolean buttonstate = 0;
boolean execution = false;
void setup() {
pinMode(boutonpin, INPUT);
pinMode(ledpin, OUTPUT);
}
void loop() {
buttonstate = digitalRead(boutonpin);
if (buttonstate == HIGH) {
if (execution == false) {
for (int i; i < 5; i ++) {
digitalWrite(ledpin, HIGH);
delay(500);
digitalWrite(ledpin, LOW);
delay(500);
}
execution = true;
}
}
}
Mon problème est que je ne comprends pourquoi quand j'appuie sur le bouton mon led clignote 5 fois comme je le désire mais quand je ré-appuie sur mon bouton mon led ne clignote plus... pourquoi la séquence ne recommence pas?
slt tu peux aussi rajouter "else execution = false;" à la fin du "if (buttonstate == HIGH) {}" comme ça quand tu lache le bouton "execution" retombe à zéro et tu peux recommencer ça s'appelle un anti-rebond cela permet d'exécuter une tache qu'une seule fois, ici en l'occurrence ton "for"
const int boutonpin = 2;
const int ledpin = 13;
boolean buttonstate = 0;
boolean execution = false;
void setup() {
pinMode(boutonpin, INPUT);
pinMode(ledpin, OUTPUT);
}
void loop() {
buttonstate = digitalRead(boutonpin);
if (buttonstate == HIGH) {
if (execution == false) {
for (int i; i < 5; i ++) {
digitalWrite(ledpin, HIGH);
delay(500);
digitalWrite(ledpin, LOW);
delay(500);
}
execution = true;
}
} else execution = false;
}