Maintien d'une variable pour un bouton poussoir

bonjour ,

j'ai un projet pour l'école que je n'arrive pas à finaliser, je dois faire tourner un moteur pas à pas avec un microcontrôleur jusqu'ici j'ai tout réussi. mon prof ma demander de rajouter un maintien sur mes bouton mais sa fait une semaine je bloque du coup je fais appelle à votre aide !!

je dois mettre un maintien sur le BP 1 et 2 pour la rotation du moteur et sur le BP 3 pour qu'il reste à l'arrêt

voici mon code :

#define LED_ROUGE_STOP   13 //indique que le moteur et a l'arret 
 #define LED_VERTE_SENS_1 12 //indique que le le moteur tourne dans le sens horlogique 
 #define LED_BLEU_SENS_2  11 //indique que le le moteur tourne dans le sens anti horlogique 
 
 #include <AccelStepper.h>
 AccelStepper Mon_moteur(9, 8, 7, 6);     
                                               
 int monMotVitesse = 0;
 
 const int BP1=4; // bouton qui vas faire tourner mon moteur dans sens horlogique
 const int BP2=3;// bouton qui vas faire tourner mon moteur dans sens anti horlogique
 const int BP3=2;// bouton qui vas stoper mon moteur 

 const int POUSSOIR = 2; 
int out = 0;
boolean verrouillage = 0;
unsigned long int t1;


 void setup() 
 {
  pinMode(LED_ROUGE_STOP,OUTPUT);
  pinMode(LED_VERTE_SENS_1,OUTPUT);
  pinMode(LED_BLEU_SENS_2,OUTPUT);
  pinMode(BP1,INPUT_PULLUP);
  pinMode(BP2,INPUT_PULLUP);
  pinMode(BP3,INPUT_PULLUP);

  Mon_moteur.setMaxSpeed(600);
 }
 
 void loop() 
 {
   if (digitalRead(BP3) == HIGH)
   {
    monMotVitesse = 0;
   digitalWrite(LED_ROUGE_STOP,HIGH);
   digitalWrite(LED_VERTE_SENS_1,LOW);
   digitalWrite(LED_BLEU_SENS_2,LOW);
   }
   
   else if (digitalRead(BP1) == HIGH)
   {
     monMotVitesse = 600;          // Marche CW (sens des aiguilles d'une montre)
   digitalWrite(LED_VERTE_SENS_1,HIGH);
   digitalWrite(LED_ROUGE_STOP,LOW);
   digitalWrite(LED_BLEU_SENS_2,LOW);
   } 
   else if (digitalRead(BP2) == HIGH)
   {
     monMotVitesse = -600;          // Marche CCW (sens contraire des aiguilles d'une montre)
   digitalWrite(LED_BLEU_SENS_2,HIGH);
   digitalWrite(LED_VERTE_SENS_1,LOW);
   digitalWrite(LED_ROUGE_STOP,LOW);
   }

   
   else
   {
     monMotVitesse = 0;             // Arrêt
   }
 
  if (monMotVitesse != 0)             // Si un bouton est pressé
  {
    
    Mon_moteur.setSpeed(monMotVitesse);
    Mon_moteur.runSpeed();    
  }
  
  
 }

merci de votre aide !!

ce n'est pas clair

définissez précisément l'usage des 3 boutons

comment gérez vous les rebonds ?

c'est quoi cette constante ?