Ayuda con codigo de semaforo accionado por boton

miren tengo un pequeño proyecto de hacer un semáforo led que empieza apagado y que se inicie la secuencia cuando yo apreté un pulsador y cuando se acabe no siga osea pare y si después de eso lo vuelvo a presionar que se inicie la secuencia nuevamente

acá mi código aun incompleto ya que no le encuentro solución es intentado de miles de manera a si y mi pulsador esta como inverso cuando esta sin presionar esta en 1 y cuando esta presionado me da 0 ._.

const int ledr = 3; //led rojo
const int leda = 4;//led amarillo
const int ledv = 5;//led verde

const int boton = 6;//boton para iniciar secuencia del semaforo
int bonton_est = 0;//estado del boton

void setup() //se denominan el modo de los pines
{
pinMode (ledr, OUTPUT)
pinMode (leda, OUTPUT)
pinMode (ledv, OUTPUT)

pinMode (boton, INPUT)
}

void secuencia(int ledr,int leda,int ledv)//se modifican las variables y se hace la secuencia
{
  ledr = lr;
  leda = la;
  ledv = lv;
  
 digitalWrite(lr, HIGH);
 delay(5000);
 digitalWrite(lr, LOW);
 digitalWrite(la, HIGH);
 delay(5000);
 digitalWrite(la, LOW);
 digitalWrite(lv, HIGH);
 delay(5000);
 digitalWrite(lv, LOW)
}

void apagado()//se determina que el semaforo quedara apagado
{
 digitalWrite(lr, LOW);
 digitalWrite(la, LOW);
 digitalWrite(lv, LOW)
}

void loop() {
  boton_est = digitalRead(boton);//el estado se realiza con una lectura digital
 
 if(boton_est == HIGH)//la secuencia se inicia si se preciona el boton
 {
  secuencia(); 
}
else{

  apagado();//si no se pulsa no se enciende nada
}
}

Si es así, cambia
(boton_est == HIGH)
por
(boton_est == LOW)

Jopapa