bouton poussoir et boucle infinie

salut a tous !!!!!!! je suis novice et je cherche a demarrer ma boucle avec bouton poussoir sans avoir a rappuyer dessus pour reboucler . merci a tous pour votre aide.

Tu mets la lecture du BP dans le setup, dans une boucle infinie dont seul un appui sur le BP permet de sortir. Ensuite la loop se lancera.

salut lesept merci de prendre le temps pour me repondre .

en fait c'est ce que j'essaie de faire dans le setup mais il ne prend pas en compte ma condition if . voici un exemple très simple..
ca fait 4jours que je cherche desolé .

int led =13;
int button = 2;



void setup() {

  pinMode(led,OUTPUT);
pinMode(button,INPUT_PULLUP);
digitalWrite(led,LOW);


   if (digitalRead(button)==LOW) {
    digitalWrite(led,HIGH);
}
 
 
}

void loop() {



  }

Faut mettre une condition while, pas une condition if.

salut jfs merci pour ta reponse j'ai test avec ( while ) dans le setup mais rien du tout il prend pas en compte , si tu as une piste je prend merci les gars.

Bonjour,

Si tu utilises INPUT_PULLUP, ton entrée est à HIGH quand le bouton est relâche (si correctement câblé).
Il faut donc que tu attendes tant que l'entrée est à HIGH

void setup() {
  pinMode(led, OUTPUT);
  pinMode(button, INPUT_PULLUP);
  digitalWrite(led, LOW);

  while (digitalRead(button) == HIGH);  // attente tant que l'entrée est HIGH

  digitalWrite(led, HIGH);
}

merci Kamill justement je pense que mon souci vient du cabage .

pour mon boutton poussoir c'est bien ( GND - boutton - Pin2 ) ?

ce qui est bizar quand je place l'instruction dans le loop ca fonctionne nickel mais dans le setup RIEN ....

Oui, c'est ça.
Si c'est un bouton poussoir à 4 pins, connectes les deux pins en diagonale pour être sur de connecter correctement le bouton.

Le fonctionnement du BP est bien expliqué ici. Si ça ne fonctionne pas, poset ton code (entre balises CODE, voir messages épinglés en haut du forum).

en fait j'explique, sur mon projet j'ai un stepper sur un chariot avec un vérin pour prendre des pièces avec ventouse . j'ai fait le code qui fonctionne bien mais mon souci c'est que mon stepper a une phase d'initialisation avant la loop. par contre je ne veux pas que sous la mise tension de l'arduino le stepper bouge seul mais avec l'ordre du bouton poussoir pour faire l'initialisation .
Après avec l'ordre de la cellule il lance la loop. voici le code désolé je n'ai pas bien Indenter mon code . si ça peut aider quelqu'un pour maiguiller merci
Car le bouton poussoir fonctionne pas dans le setup .

 const int steppin = 3;
const int dirpin = 4;
const int sensor = 9;
const int relay1 = A1;
const int relay2 = A2;
const int cellule1= 11;
const int button = 2;

long steps ;

void setup() {

  Serial.begin(9600);
  
 pinMode(steppin,OUTPUT);
 pinMode(dirpin,OUTPUT);
 pinMode(sensor,INPUT);
 pinMode(relay1,OUTPUT);
 pinMode(relay2,OUTPUT);
 pinMode(cellule1,INPUT);

 
  pinMode(button,INPUT_PULLUP);

  digitalWrite(sensor,HIGH);
  digitalWrite(cellule1,HIGH);
  digitalWrite(enablepin,LOW);
  digitalWrite(relay1,HIGH);
  digitalWrite(relay2,HIGH);

///////////////////////////////////////////////////////////////////////////////

//bouton poussoir ici ?????????????

// if (digitalRead(button)==LOW) {


//////////////////////////////////////////////////////////////////////////////

    
for (long steps = 0 ;steps <80000; steps++)     ////////////////// moteur arriere
{
    digitalWrite(steppin,HIGH);
    delayMicroseconds(60);
    digitalWrite(steppin,LOW);
    delayMicroseconds(60);
   
    if (digitalRead(cellule1)==LOW) {

 break;
    
    }
 

}

delay(1000);
    digitalWrite(dirpin,HIGH);           ///////////////////////////// moteur avant 

  for (long x= 0 ;x= 26000; x++){
    digitalWrite(steppin,HIGH);
    delayMicroseconds(60);
    digitalWrite(steppin,LOW);
    delayMicroseconds(60);
    steps++ ;
    if(steps==26000) break; 

    }
    
steps = 0;
  
 }




void loop() {
  
   if  (digitalRead(sensor)== LOW)              
     {
   
    digitalWrite(relay1,LOW);   ///////////////////// relay1 DOWN
    delay(1000);

    digitalWrite(relay1,HIGH); 
               

    digitalWrite(relay2,LOW); ////////////////////// relay2 UP
    delay(1000);

    digitalWrite(relay2,HIGH);
           
     
    
   digitalWrite(dirpin,HIGH);          ///////////////////////// moteur avant 

  for (long x= 0 ;x= 58000; x++){
    digitalWrite(steppin,HIGH);
    delayMicroseconds(15);
    digitalWrite(steppin,LOW);
    delayMicroseconds(15);
    steps++ ;
    if(steps==58000) break;}
    Serial.println(steps);
    
    
    
    digitalWrite(relay1,LOW);   ////////////////////////////////// relay1 DOWN
    delay(1000);

    digitalWrite(relay1,HIGH); 
               

    digitalWrite(relay2,LOW); /////////////////////////////////// relay2 UP
    delay(1000);

    digitalWrite(relay2,HIGH);
 

    
   digitalWrite(dirpin,LOW);      /////////////////////////////////////////// moteur arriere


for (long x = 0 ;x= 58000; x--){
    digitalWrite(steppin,HIGH);
    delayMicroseconds(15);
    digitalWrite(steppin,LOW);
    delayMicroseconds(15); 
    steps--;
    if(steps==0)break ;}
Serial.println(steps);
     
    
    }
 }

bon j'ai refait des tests avec le boutton poussoir dans le setup. il voit bien l'état du boutton mais juste quand je reste appuyer sur le boutton et je mets sous tension l'arduino .

il faut que je cree un millis avant le boutton poussoir ?.

Essaie de mettre une delay(1000) au début du setup.

Bon c'est ok les gars je me suis embrouiller avec le input_PULLUP

en fait juste while (digitalRead(button)==HIGH) merçi pour votre aide et desolé pour le derangement d'un truc si bete .

jfs j'avais tester avec (delay) il y avait juste une pause et il passer sans voir le BP.

merçi pour votre patience