Pulsador con sorvemotor

Hola tengo una duda. Me gustaria que cuando pulsara el boton por 10 segundos el servomotor girara 180º (hasta aqui todo bien) pero después me gustaria que volviera a su posicion inicial (esto también sin ningun problema) pero sin el mismo delay de 10 segundos, por ejemplo 5 o ninguno. Adjunto codigo:
#include <Servo.h>

Servo myservo;

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

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

void loop()
{
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
val = 180;
delay(10000);
}
else {
val = 0;

}
myservo.write(val);
delay(15);
}

Hola , puedes definir una función para ello como por ejemplo:

void mover ( int tiem){
myservo.write (val);
delay (tiem);
}

y en tu codigo en vez de poner myservo.write(val); colocas mover(el tiempo que quieras);

#include <Servo.h>
Servo myservo;
int val;
void setup()
{
  myservo.attach(9);
  pinMode(2, INPUT);
  pinMode(9, OUTPUT);
}
void loop()
{ 
  if (digitalRead(buttonPin) == HIGH) {
    for (int x = 0; x <= 180; x++) {
      val = 180;
      mover (15);
    }
  }
  else {
    for (int x = 180; x >= 0; x--) {
      val = 180;
      mover (0);
    }
  }
  delay(10000);
}
void mover ( int tiem) {
  myservo.write (val);
  delay (tiem);
}

Saludos.