Problème de condition FOR

Bonjour le monde, je viens vers vous parce que cela fait un petit moment que je galère pour comprendre comment un petit bout de code tout simple ne fonctionne pas bien sur mon arduino, le but est de faire “clignoter” un relais 5 fois, ça fonctionne a cela près que ça ne fini jamais… comme si ma boucle for était infini… je comprend pô :frowning:

#define RELAY_1 2

void setup() {
    pinMode(RELAY_1, OUTPUT);  
    digitalWrite(RELAY_1, HIGH);
}

void loop() {
    for (int i = 0; i < 6; i++) {
        pulseRelayON(RELAY_1);
        pulseRelayOFF(RELAY_1);
    }
}

void pulseRelayON(int pin) {
    digitalWrite(pin, LOW);
    delay(600);
}

void pulseRelayOFF(int pin) {
    digitalWrite(pin, HIGH);
    delay(300);
}

Si quelqu’un peux m’aider il est le bienvenue :slight_smile:

Bonjour,
Ton programme fonctionne très bien de la façon dont tu l’as écrit.
Lors du démarrage ton programme effectue le setup() puis entre dans loop() (qui est une boucle qui s’effectue indéfiniment)
Ton programme effectue ta répétition

    for (int i = 0; i < 6; i++) {
        pulseRelayON(RELAY_1);
        pulseRelayOFF(RELAY_1);
    }

Lorsque cette répétition est termine, il recommence puisque c’est le principe même de loop()
Si tu veux exécuter cette boucle qu’une seule fois, il faudra faire différemment, à savoir :

  • l’exécuter dans le setup,
  • mettre un drapeau pour contrôler l’exécution dans loop,
  • plus d’autres solutions (en programmation souvent les solutions sont aussi nombreuses que les programmeurs)
    En attendant, fait l’essai suivant :
#define RELAY_1 2

void setup() {
    pinMode(RELAY_1, OUTPUT);  
    digitalWrite(RELAY_1, HIGH);
    for (int i = 0; i < 6; i++) {
        pulseRelayON(RELAY_1);
        pulseRelayOFF(RELAY_1);
    }
}

void loop() {
}

void pulseRelayON(int pin) {
    digitalWrite(pin, LOW);
    delay(600);
}

void pulseRelayOFF(int pin) {
    digitalWrite(pin, HIGH);
    delay(300);
}

Dans ce cas ton relais va clignoter 5 fois à chaque démarrage de la carte Arduino.
@+

Merde c’est vraiment trop c** comme erreur :astonished:

Le problème quand on passe plusieurs heures a coder c’est qu’au bout d’un moment notre cerveau sature et on perd toute logique, après une bonne nuit de sommeil (ou journée en l’occurrence…) tout semble beaucoup plus simple :slight_smile:

Hier soir j’ai même commencé a pester contre mon arduino qui devait mal fonctionner (…). En fait, tout va bien :sweat_smile:

Merci icare :wink: