problème micro-rupteur

Bonjour tout le monde ,

je post un message car ça fait plusieurs jour que je plante sur un projet !!! j’ai besoin de votre aide s’il vous plait !!!

je m’explique ,

j’ai un bouton poussoir et un micro-rupteur mon projet consisterais à:

quand je pousse mon bouton poussoir un chrono ce met en route pendant 5 secondes au bout de c’est 5 secondes on active un servo-moteur qui fait tourner une roue dentées entre chaque dents ou creux de la roue le micro-rupteur utilisé en capteur ce relâche il est l’état 0 ça stop le servo

jusque la tout va bien j’arrive à faire fonctionner le sketch mais mon problème c’est que je veut que chaque fois que je reclic sur le bouton on recommence ce cycle et la problème !!!

vu que mon micro-rupteur est déjà à l’état relâché quand je veut recliqué sur le bouton le chrono ne ce met pas en route mon servo ne veut pas redémarrer je vous met le code vous imaginerez mieux ceux que je veut dire!

merci beaucoup de votre aide et désolé pour les fautes !!!

#include <Servo.h>

Servo monservo;


float vitesse= 93.0;  // vitesse d'arret du servo continu
int compteur= 0;      
long temps;
int activ_serv=0 ;


void setup () {

  Serial.begin(115200);
  pinMode(2,INPUT);
  pinMode(3,INPUT);
 monservo.attach(9);

}

void loop () {
  
  // declaration variables pour le bouton poussoir et le micro-rupteur
 
 int a;
  int b;
  int c;
  int d;
      a = digitalRead(2);
      b = 1; 
      c = digitalRead(3);
      d = 0;
      
      
      

 if (a==b) // si on appuie sur le bouton poussoir on crée un chrono
 {
      if ((millis() - temps) >1000)   // si le temps et supérieur à 1 seconde 
         {
           compteur++;   // on incrémente la variables compteur
           temps = millis();  // on remet temps à la valeur de millis
         }
 }
   
  if (compteur<=5) // si compteur inferieur à 5 s 
     {
      activ_serv=0;
     }
 if (compteur>=5) // si compteur superieur à 5 s
     {
      activ_serv=1;
     }
    
     
 if (activ_serv==1)    // si activ serv =1 on met le servo en route 
    {
      vitesse=91.5 ;
      monservo.write(vitesse);
    }
 if (activ_serv==0)    // si activ serv =0 on éteint le servo
    {
      vitesse = 93 ;
      monservo.write(vitesse);
    }
    
    
 if (c==d)   // si le micro-rupteur est relaché  on éteint tout on remet à zéro le compteur 
    {
      activ_serv=0;
      compteur=0;
    }

}

moi je veut que chaque fois que je clic sur le bouton on fasse ce cycle d’attendre 5 secondes de faire tournée la roue jusqu’à ce que le micro-rupteur ce relâche problème c’est qu’on doit partir avec un micro-rupteur déjà relâché

j’espère être assez clair merci beaucoup de vos futur réponse j’espère qu’il y en aura car je plante la mais ça dois être très simple à réaliser pour quelqu’un qui s’y connais !!

Bonjour, Même remarque qu'ICI

Bonjour,

Met ton code entre balises (voir ici)

La solution est d’attendre que le micro-rupteur soit relaché juste après le démarrage

void loop () {
  // declaration variables pour le bouton poussoir et le micro-rupteur
  int a;
  int b;
  int c;
  int d;
  a = digitalRead(2);
  b = 1;
  c = digitalRead(3);
  d = 0;

  static bool bMarche = false;

  if (a == b) // si on appuie sur le bouton poussoir on crée un chrono
  {
    if ((millis() - temps) > 1000)  // si le temps et supérieur à 1 seconde
    {
      compteur++;   // on incrémente la variables compteur
      temps = millis();  // on remet temps à la valeur de millis
    }
  }

  if (compteur <= 5) // si compteur inferieur à 5 s
  {
    activ_serv = 0;
  }
  if (compteur >= 5) // si compteur superieur à 5 s
  {
    activ_serv = 1;
  }


  if (activ_serv == 1)  // si activ serv =1 on met le servo en route
  {
    vitesse = 91.5 ;
    monservo.write(vitesse);
    if (!bMarche)
    {
      // si mise en marche attente micro rupteur enfoncé
      while (digitalRead(3) == LOW)
        delay(5);
    }
    bMarche = true;
  }
  if (activ_serv == 0)  // si activ serv =0 on éteint le servo
  {
    vitesse = 93 ;
    monservo.write(vitesse);
    bMarche = false;
  }


  if (c == d) // si le micro-rupteur est relaché  on éteint tout on remet à zéro le compteur
  {
    activ_serv = 0;
    compteur = 0;
  }
}