problemas con inicio de programa mediante botón

Hola buenas
El caso es q estoy tratando de escribir un programa para un robot sigue líneas y me he quedado un poco trabado.
El problema lo tengo porque he introducido un botón con el cual quiero poner en marcha el seguidor de líneas, es decir, el coche tiene que mantenerse parado hasta que pulse el botón.
Por ahora, con lo que tengo escrito el coche se mantiene parado y en el momento que pulso el botón comienza a moverse pero si suelto el botón se vuelve a parar.
Lo que yo quiero conseguir es que pulsando una vez el botón se complete una vuelta entera a un circuito.
os dejo un archivo donde esta el programa que tengo escrito y un esquema de lo que quiero conseguir, si alguno puede echarme una mano lo agradecería.

sigue lineas.zip (207 KB)

Es normal que pase. El void loop() es una función cíclica (loop). Cuando pulsas el botón, la condición if (valor==1) se cumple un momento pero al soltarlo, en el siguiente bucle valor ya es cero y el if se para.

Puedes meter todo lo que hay detrás del if (valor==1) dentro de una función que deberá ejecutarse hasta terminar la tarea tal que así

if (valor==1){
tarea()
}