Control de servomotor mantener posición

Les cuento, tengo un proyecto el cual es una banda transportadora y esta separa cajas dependiendo del tamaño de estas en mi proyecto son 3 tamaños diferentes, los clasifico con ayuda de 3 sensores infrarrojos
y al final de la banda va un servo que va rotando en 3 posiciones diferentes.

Mi problema es que al detectar el tamaño el servo si hace su función pero después de que los sensores no detectan nada el servo regresa a la posición inicial y no da tiempo a que la caja llegue al final con el servo. como podría hacer para que se mantenga el servomotor hasta que la caja llegue al final. Gracias por sus respuestas.

#include<Servo.h>
Servo myservo;

int ang1=60;
int ang2=120;
int ang3=180;

#define S1 2
#define S2 3
#define S3 4

void setup() {
  pinMode(S1,INPUT);
  pinMode(S2,INPUT);
  pinMode(S3,INPUT);
  myservo.attach(9);
}

void loop() {
  myservo.write(0);
  delay(10);

  while (digitalRead(S1)==1 && digitalRead(S2)==0 && digitalRead(S3)==0)
  {
    myservo.write(ang1);
    
  }

  while (digitalRead(S1)==1 && digitalRead(S2)==1 && digitalRead(S3)==0)
  {
    myservo.write(ang2);
    
  }
  while (digitalRead(S1)==1 && digitalRead(S2)==1 && digitalRead(S3)==1)
  {
    myservo.write(ang3);
    
  }

  while (digitalRead(S1)==0 && digitalRead(S2)==0 && digitalRead(S3)==0)
  {
    myservo.write(0);
   
  }
  

}

Ponlo en la posición intermedia.
Si tienes 3 posiciones, déjalo en la posición central entre las posiciones extremas.
Si el tamaño coincide con esa posición no tienes que hacer nada y sino lo mueves a uno u otro lado.

Moderador:
Este es un problema de software, no entiendo porque lo planteaste en Hardware.
Por favor lee las normas del foro.

Haa ok sorry veo que ya moviste el post.
A lo mejor no me dia entender muy bien pero lo que quiero hacer es como enclavar el servo en una posicion por ejemplo empieza en la posicion 0 / pasa una caja/ el servo se mueve a 60 grados/ cae la caja/ el servo se mantiene en 60 grados hasta los sensores detecten otra caja.

Tengo una idea de almacenar los valores de los sensores de una variable pero no se como representarlo

Bueno pero si no puedes hacer eso mejor lee un libro o mira los cursos de Arduino disponibles en Youtube. Porque lo que estas planteando es básico de programación.
Sostener una posición en una variable, no da mucho problema.
Define una variable de esta forma

int posicion = 0;

y cada vez que muevas tu servo, ajustas esa posición al valor que deseas moverla.

Esto ocurre porque has copiado un código del que no entiendes como funciona. No sirve copiar cosas de internet cuando se desconoce como funcionan.
Es preferible entender como trabaja cada librería desde un tutorial.

Acá lo tienes, modificado para que haga lo que dices.

#include<Servo.h>
Servo myservo;

#define S1 2
#define S2 3
#define S3 4

int ang1 =  60;
int ang2 = 120;
int ang3 = 180;

bool boton1, boton2, boton3;

void setup() {
  pinMode(S1,INPUT);
  pinMode(S2,INPUT);
  pinMode(S3,INPUT);
  myservo.attach(9);
}

void loop() {
  myservo.write(0);
  delay(10);

  boton1 = digitalRead(S1);
  boton2 = digitalRead(S2);
  boton3 = digitalRead(S3);

  if (boton1 && !boton2 && !boton3)   {
    posicion = ang1;
  }

  if (boton1 && boton2 && !boton3)  {
    posicion = ang2;
  }
  if (boton1 && boton2 && boton3)  {
    posicion = ang3;
  }

  if (!boton1 && !boton2 && !boton3)   {
    myservo.write(posicion);
  }
}