Comment fait-on pour arrêter la boucle ?

Bon et bien merci,

finalement j'ai trouvé ma solution, en mémorisant mon état en fin d'un condition.

Merci encore pour vos conseils.

pour ceux que sa intéresse je met mon programme histoire de comprendre sur ce Salut et a bientôt :grin: XD

/* test de programmation
Deux capteurs

*/
// set pin :
const int bistable1 = 2; // Bistable reconnaissance d'allée
const int bistable2 = 3;// bistable reconnaissance d'allée Nisveau 2
byte etat; // memorisation de l'etat de la sequence 1
byte etat2; // memoristion de l'etat de la sequence 2
byte bst1;
byte bst2;
const int id1 = 7; // entrée Mcu id d'allée
const int id2 = 12; // entrée Mcu id d'allée
const int id3 = 13; // entrée Mcu id d'allée
// Les variables

const int activ = 0;
const int No_activ = 1;
const int ON = 1;
const int OFF = 0;
int bist1state = 0; // statue du bistable 1
int bist2state = 0; // statue du bistable 2

void setup() {
// initilisation des sorties carte:
pinMode(id1, OUTPUT);
pinMode(id2, OUTPUT);
pinMode(id3, OUTPUT);
// initialisation des entrées:
pinMode(bistable1, INPUT);
pinMode(bistable2, INPUT);
digitalWrite(bistable1, HIGH); //rappel pullup au + du bistable
digitalWrite(bistable2, HIGH); //rappel pullup au + du bistable

}
//Programme:
void loop (){
// lecture des etats des bistables:
// check l'etat des bistables.
// si le bistable 1 et actif alors fais la sequence suivant:
bist1state = digitalRead(bistable1);
bist2state = digitalRead(bistable2);

// lance la sequence 1.
if ((bist1state == activ) && (bist2state == No_activ)){
bst1 = 1;
}

if ((bist1state == No_activ) && (bist2state == activ))

{
bst2 = 1;
}

if ( bst1 ==1 && etat == 0 )
{
digitalWrite(id1, HIGH);
digitalWrite(id2, HIGH);
digitalWrite(id3, HIGH);
delay(2000);
digitalWrite(id1, LOW);
digitalWrite(id2, LOW);
digitalWrite(id3, LOW);
delay(2000);
digitalWrite(id1, HIGH);
delay(2000);
digitalWrite(id1, LOW);
etat = 1;

}
// lance sequence 2.
if (bst2 == 1 && etat2 == 0)

{
digitalWrite(id1, HIGH);
delay(2000);
digitalWrite(id1, LOW);
delay(2000);
digitalWrite(id1, HIGH);
digitalWrite(id2, HIGH);
digitalWrite(id3, HIGH);
delay(2000);
digitalWrite(id1, LOW);
digitalWrite(id2, LOW);
digitalWrite(id3, LOW);
etat2 = 1;

}

// les capteus sont au repos
if ((bst1 == 0) && (bst2 == 0))
{

// off
digitalWrite(id1, OFF);
digitalWrite(id2, OFF);
digitalWrite(id3, OFF);
etat = 0;
etat2 = 0;

}
bst1 = 0;
bst2 = 0;
}