Ayuda con ciclos

Hola, tengo un programa sencillo
Una serie de leds, que se se encienden en secuencia al pulsar un botón
Luego con un segundo botón debería parar la secuencia
Y un tercer botón que haga la secuencia al reves

El problema que tengo es que al pulsar el boton de stop, no detiene la secuencia, sigue el loop de la secuencia

int pinLed1 = 13;
int pinLed2 = 12;
int pinLed3 = 11;
int pinLed4 = 10;
int pinLed5 = 9;
#define btnStart = 7;
#define btnStop = 6;
#define btnReverse =5;
int tiempo = 150;
float clickstart = 0;
float clickstop;
float clickreverse;
void setup() {
pinMode(13,OUTPUT); 
pinMode(12,OUTPUT);
pinMode(11,OUTPUT);
pinMode(10,OUTPUT);
pinMode(9,OUTPUT);
pinMode(7, INPUT);
pinMode(6, INPUT);
pinMode(5, INPUT);

}

void loop() {
clickstart = digitalRead(7);


while(clickstart==HIGH){
start();
}
while(clickstop==HIGH){
  clickstart==LOW;
  stop();
  reverse();
}


}


void start() {
digitalWrite(13,HIGH); 
delay(tiempo);
digitalWrite(13,LOW); 
delay(tiempo);
digitalWrite(12,HIGH);
delay(tiempo);
digitalWrite(12,LOW);
delay(tiempo);
digitalWrite(11,HIGH);
delay(tiempo);
digitalWrite(11,LOW);
delay(tiempo);
digitalWrite(10,HIGH);
delay(tiempo);
digitalWrite(10,LOW);
delay(tiempo);
digitalWrite(9,HIGH);
delay(tiempo);
digitalWrite(9,LOW);
delay(tiempo);

}

void stop() {
digitalWrite(13,LOW); 
digitalWrite(12,LOW);
digitalWrite(11,LOW);
digitalWrite(10,LOW);
digitalWrite(9,LOW);
clickreverse=digitalRead(5);
}
void reverse() {
digitalWrite(9,HIGH);
delay(tiempo);
digitalWrite(9,LOW);
delay(tiempo);
digitalWrite(10,HIGH);
delay(tiempo);
digitalWrite(10,LOW);
delay(tiempo);
digitalWrite(11,HIGH);
delay(tiempo);
digitalWrite(11,LOW);
delay(tiempo);
digitalWrite(12,HIGH);
delay(tiempo);
digitalWrite(12,LOW);
delay(tiempo);
digitalWrite(13,HIGH); 
delay(tiempo);
digitalWrite(13,LOW); 
delay(tiempo);
}

La verdad no tengo idea que hacer, ya probé con diferentes metodos, una interrupción, sentencias if, etc.

You posted this in the English section of the forum; I've moved your topic to the Spanish section.

You never seem to read your "stop" button.

Why do you use float variables for clickstart, clickstop and clickreverse?

Google translate:

I dont really know why they´re float, i just started doing stuff, sorry
when would be the right place to put the read for the stop?

Necesitamos ver un diagrama que muestre cómo tienes conectados los botones. Una foto de uno hecho a mano nos funciona.

Y en el código debes identificar los pines correspondientes y declararlos como INPUT (INPUT_PULLUP, lo sabremos luego de ver tu diagrama.

Mientras, estudia el concepto de debouncing, que maneja el rebote que ocurre casi siempre oprimes un botón, creando la ilusión de que se ha oprimido y soltado el botón repetidamente

image
Verde inicia
rojo para
amarillo invierte

En principio olvidaste leer es estado del botón stop.

clickstart==LOW;

Eso está mal, es una comparación, no una asignación.
Debería ser

clickstart=LOW;

pero no tiene sentido porque va a ser reasignada en la próxima lectura del botón.

Y llamas a reverse() sin tener en cuenta el estado del botón amarillo.

Logre resolverlo, gracias