Ayuda con servos

Hola, pido ayuda ya que no se como hacer que mi servo se mantenga en movimiento al oprimir un botón, lo que quiero es que al presionar el boton el servo se mantenen movimiento hasta que el boton vuelva a presionarse.
Pueden ayudarme con el codigo.
Este es el codigo que tengo.

#include <Servo.h>

Servo servo1;
#define button 9
#define button2 7

void setup(){
  servo1.attach(8);
  pinMode(button, INPUT);
  pinMode(button2, INPUT);
}

void loop(){
  int buttonState1 = digitalRead(button);
  int buttonState2 = digitalRead(button2);
  if(buttonState == true){
    servo1.write(100);
    delay(1000);
  }
  if(buttonState2 == true){
    servo1.write(90);
    delay(1000);
  }
}

Supongo que tienes un boton para izquierda y otro para derecha y que quieres que mientras tengas pulsado el izquierdo el servo gire a la izquierda mientras lo tengas pulsado hasta que lo sueltes o llegue a su tope y lo mismo para la derecha,¿es asi?

Te falta sumar dos variables que recuerden el estado pulsado.

#include <Servo.h>

Servo servo1;
#define PinButton1 9
#define PinButton2 7

boolean estado1 = false;
boolean estado2 = false;

void setup(){
  servo1.attach(8);
  pinMode(PinButton1, INPUT);
  pinMode(PinButton2, INPUT);
}

void loop(){
  int valor1= digitalRead(PinButton1);
  

  int valor2 = digitalRead(PinButton2);
  if(valor1== true){
     estado1  != estado1;
  }
  if (estado1) {
    servo1.write(100);
    delay(1000);
  }

  if(buttonState2 == true){
      estado2  != estado2;
  }
 
  if (estado2)
    servo2.write(90);
    delay(1000);
  }
  
}

Un while no valdría en este caso?

Como ayudaría el while que mencionas?