Mein Programm macht den Drehrichtung wechsel nicht sauber ich muss mehrmals die Taste türken bis er wechselt

Code:
/*
  Analog Input

 
*/
#include "OneButton.h"

#define MOTOR_1  A2
#define MOTOR_2  A4
#define POTI     A0
#define PWM      9
#define TASTER   5

#define LED      3

bool sto = 0;





//void clickedIt();
OneButton button(TASTER, true);
//int poti = A0;    // select the input pin for the potentiometer

int poti_Value = 0;  // variable to store the value coming from the sensor

int poti_prozent = 0;
bool sicherheit = 1;

void setup() {
  // declare the ledPin as an OUTPUT:
  //pinMode(ledPin, OUTPUT);
 //Serial.begin(9600);
  //pinMode(MOTOR_1,OUTPUT);
  //pinMode(MOTOR_2,OUTPUT);
  pinMode(LED,OUTPUT);
  //pinMode(TASTER,INPUT_PULLUP);
  pinMode(MOTOR_1,OUTPUT);
  pinMode(MOTOR_2,OUTPUT);
  pinMode(PWM,OUTPUT);
  digitalWrite(LED, LOW); 
  poti_prozent = 4;
  // Sicherheitsschaltung Poti auf 0 und Motor Aus
  //poti_Value = analogRead(POTI);
  //poti_prozent = map(poti_Value, 0,1023, 0,100);

  //pinMode(TASTER, INPUT);
  button.attachClick(clickedIt);
  button.attachDoubleClick(doubleClickedIt);

  
      while( poti_prozent >= 3 )
      {  
           //Serial.println("Poti zu Hoch ! ! !");
           digitalWrite(MOTOR_1, HIGH);
           digitalWrite(MOTOR_2, HIGH);
           digitalWrite(LED, HIGH);
           delay(60); 
          poti_Value = analogRead(POTI);
          poti_prozent = map(poti_Value, 0,1023, 0,100);
           digitalWrite(LED, LOW);
           delay(60);
          
      }
        
}
bool Drehrichtung = true;

void loop() {
 button.tick();
 stopp();
 
       
  //void clickedIt();
  
  int pwmSpeed;

   //delay(200);
   //digitalWrite(MOTOR_1, HIGH);
   //digitalWrite(MOTOR_2, HIGH);
   //delay(200);
  
  if(Drehrichtung == 1)
  {
       button.tick();
       stopp();
  //void clickedIt();
 // LED Drehrichtung Rechts 
 digitalWrite(LED, LOW);
 
  poti_Value = analogRead(POTI);
  poti_prozent = map(poti_Value, 0,1023, 0,100);
  // Ausgabe
  //Serial.print("Rechts Poti = ");
  //Serial.print(poti_prozent);
  //Serial.println("% ");
  
  // Drehrichtung Rechts
  digitalWrite(MOTOR_1, LOW);
  digitalWrite(MOTOR_2, HIGH);
  
  // Geschwindigkeit regeln
  analogWrite(PWM, poti_Value / 4);
  
  }

        button.tick();
        stopp();
  
  if(Drehrichtung == 0)
  {
        button.tick();
        stopp();
  //void clickedIt();
  
  // LED Drehrichtung Links
  digitalWrite(LED, HIGH);

  poti_Value = analogRead(POTI);
  poti_prozent = map(poti_Value, 0,1023, 0,100);
  // Ausgabe
  //Serial.print("Links Poti = ");
  //Serial.print(poti_prozent);
  //Serial.println("% ");

  // Drehrichtung Links 
  digitalWrite(MOTOR_1, HIGH);
  digitalWrite(MOTOR_2, LOW);
  
  // Geschwindigkeit regeln
  analogWrite(PWM, poti_Value / 4);
  
  
  }
        button.tick();
        stopp();
}

void clickedIt()
{

  Drehrichtung = !Drehrichtung;
  
  digitalWrite(MOTOR_1, HIGH);
  digitalWrite(MOTOR_2, HIGH);
  
  
  digitalWrite(LED, HIGH);
  delay(100);
  
  digitalWrite(LED, LOW);
  delay(100);
 
  digitalWrite(LED, HIGH);
  delay(100);

  digitalWrite(LED, LOW);
  delay(100);
 
  
  
 }
 
void doubleClickedIt()
{
  sto = !sto;
  
 }

 void stopp(void)
{
  while(sto == true )
  {
   button.tick();
  digitalWrite(MOTOR_1, HIGH);
  digitalWrite(MOTOR_2, HIGH);

   //Serial.println("STOPP!!!");
  
  
  digitalWrite(LED, HIGH);
  delay(50);
  button.tick(); 
    delay(50);
  button.tick(); 
    delay(50);
  button.tick();
    delay(50);
  button.tick(); 
    delay(50);
  button.tick();  
  digitalWrite(LED, LOW);
  delay(50);
  button.tick(); 
    delay(50);
  button.tick(); 
    delay(50);
  button.tick();
    delay(50);
  button.tick(); 
    delay(50);
  button.tick(); 
  
  }
  
}