Ciclo con led y pulsador

Hola, quería pedirles ayuda porque estoy realizando un proyecto, pero me esta fallando el cierre de un ciclo, se trata de que por medio de un pulsador se prendad 4 led's de izquierda a derecha, pero después de que se repita cuatro veces dejen de prender.

#define led1 2
#define led2 3
#define led3 4
#define led4 5
#define boton1 9
#define boton2 10
#define boton3 11
#define boton4 12

int estado=0;
void setup(){
pinMode(boton1,INPUT_PULLUP);
pinMode(boton2,INPUT_PULLUP);
pinMode(boton3,INPUT_PULLUP);
pinMode(boton4,INPUT_PULLUP);
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
pinMode(led3,OUTPUT);
pinMode(led4,OUTPUT);
}
void loop ()
{
estado=!digitalRead(boton1);
if(estado==!0
{
digitalWrite(led4,HIGH);
delay(1200);
digitalWrite(led4,LOW);
digitalWrite(led3,HIGH);
delay(1200);
digitalWrite(led3,LOW);
digitalWrite(led2,HIGH);
delay(1200);
digitalWrite(led2,LOW);
digitalWrite(led1,HIGH);
delay(1200);
digitalWrite(led1,LOW);
}
}

Eso es lo que llevo de codígo, espero me puedan ayudar.
Saludos.

Pasate por el tutorial Enteder millis y no morir en el intento, en el explico que ocurre cuando usas delay, sobretodo cuando quieres usar botones y como se ha de solucionar.

PD. Edita tu primer post, acorde las normas, utilizando etiqueta code para el código.

Hola, en todo caso para simplificar tu código puedes usar la instrucción "for", para que los leds prendan progresivamente; ahora para que de un ciclo de 4 vueltas, podrías usar una funcion de contador "++", para que cuenta cada vuelta y al llegar a 4 vueltas se termine el ciclo y vuelva a 0.

Si tu código tratara de solo eso, puedes usar el delay, pero caso contrario que quieras hacer otras cosas paralelamente, seria bueno q uses la funcion millis, por cuanto el delay te paralizara todo en general, y mientras dure el delay la placa no podra hacer otras cosas.