Servo y pulsador

Necesito ayuda, estoy intentando programar en arduino para que un servo haga una secuencia de movimientos al pulsar un boton, y que despues de la secuencia se pueda volver a accionar, si alguien me puede decir que falla en mi programacion, mi programacion es esta:

#include <Servo.h> 

Servo myservo;

const int buttonPin = 2;
int val;
int buttonState = 0;

void setup() 
{ 
 Serial.begin(9600)
 myservo.attach(9);
 pinMode(buttonPin, INPUT);       
} 

void loop() 
{ 
 buttonState = digitalRead(buttonPin);
 if (buttonState == HIGH) {     
   myservo.write(90);
   delay(1000);
   myservo.write(0);
   delay(1000);
   myservo.write(180);
   delay(1000);
   myservo.write(0);
   delay(1000);
   buttonState = 0;
 } 
 else {
  myservo.write(0);
 } 
}

Lee las normas del foro y luego edita tu post para que el código se vea como corresponde.
Usa la etiqueta que le corresponde (</>)

Ve a More, luego Modify y esas en edición.
Luego selecciona todo el código y click en </>

    myservo.write(90);
    delay(1000);
    myservo.write(0);
    delay(1000);
    myservo.write(180);
    delay(1000);
    myservo.write(0);
    delay(1000);
    buttonState = 0;

comando 1 retardo de 1 seg
comando 2 retardo de 1 seg
comando 3 retardo de 1 seg
comando 4 retardo de 1 seg

cada presion de tu boton tardará 4 seg en reaccionar.
Ese es tu problema
Usando delay eso no se puede resolver.

Debes usar millis() asi que mira como se usan con el ejemplo BlinkWithoutDelay.ino que esa en el IDE.