Boucle dans une fonction avec un faux interrupteur

Salut à tous :grinning:
J’avais besoin de faire répéter une action en boucle dans le void setup, j’avais repéré plusieurs solutions plus ou moins élégantes pour faire ça, mais j’ai au final réussi en déclarant un interrupteur dans le code mais en n’en mettant pas sur ma breadboard.

En utilisant

int Interrupteur (13);
do{
//code
}while (Interrupteur = HIGH);

Comme il n’y a pas d’interrupteur sur le circuit, par défaut code entre do et while se répète en boucle, donc deux choses :
1 - Est ce que ce petit truc peut poser des problèmes à mon arduino ?
2 - Si il n’y a pas de problèmes, cette technique peut etre utile à certaines personnes, car sur la plupart des forums, on recommande d’utiliser la bibliothèque watchdog, mais cette solution n’est vraiment pas facile pour un débutant

test_do_while.ino (507 Bytes)

J’avais besoin de faire répéter une action en boucle dans le void setup, j’avais repéré plusieurs solutions plus ou moins élégantes pour faire ça

for (int i; i <= Nbr de fois; i++) {
Faire qqch
}

???

autre solution

const byte led1 = 9;
const byte led2 = 8;
const byte led3 = 7;
const byte interrupteur = 12;

void setup(){
  pinMode (led1,OUTPUT);
  pinMode (led2,OUTPUT);
  pinMode (led3,OUTPUT);
  pinMode (interrupteur, INPUT);
  int INT = digitalRead(interrupteur);

  while (INT){
  Serial.println("setup");
  digitalWrite (led1, HIGH);
  delay(500);
  digitalWrite(led1, LOW);
  digitalWrite(led2, HIGH);
  delay(500);
  digitalWrite(led2, LOW);
  digitalWrite (led3, HIGH);
  delay(500);
  digitalWrite(led3, LOW);

    }

}

void loop(){
}

Bonjour,

Je n'ai pas compris ton histoire d'interrupteur qui n'existe pas. Tu peux très bien utiliser une variable sans pour autant lire une entrée. Quand tu mets while (INT=HIGH) c'est une affectation. Du point de vue du test c'est comme si tu mettais while (HIGH)

Enfin si tu veux répéter quelquechose indéfiniment tu le mets dans laloop, c'est fait pour ça.

int led1(9);
int led2(8);
int led3(7);


void setup() {
  pinMode (led1, OUTPUT);
  pinMode (led2, OUTPUT);
  pinMode (led3, OUTPUT);
}

void loop() {
  digitalWrite (led1, HIGH);
  delay(500);
  digitalWrite(led1, LOW);


  digitalWrite(led2, HIGH);
  delay(500);
  digitalWrite(led2, LOW);


  digitalWrite (led3, HIGH);
  delay(500);
  digitalWrite(led3, LOW);
}

je pense qu'avec son "inter" il ne veut lancer le loop que si une activation est faite dans le setup. mais je peux me tromper.

Oui, je pense que tu te trompes puisqu'il n'y a pas dinterrupteur câblé sur la breadboard. Je ne vois pas comment il peut sortir du setup.

surtout qu'il parle de watchdog et je ne vois pas trop le rapport. watchdog = reset si une instruction met trop de temps

il faudrait qu'il explique le pourquoi de la chose.

surtout que c'est une instruction que pas mal de lib utilisent, pour les gsm par exemple.