Problemas con brazo robótico

Tienes que reprogramar todo para que el movimiento de cada servo no sea bloqueante.
Para eso ve a Documentación y lee como usar millis() y máquinas de estados.
Acá te pierdes cada acción mientras se ejecuta algo que por lo visto puede ser erróneo.
Porque programan las cosas sin probar antes lo básico?
Lo básico es ver las entradas y poner simples carteles que muestran que eso se hace bien
Ejemplo

if (pin1 == HIGH && pin2 == LOW && sensor == LOW) {

  //comenzamos a coger la pieza
  Serial.println("Tomamos la pieza");
}

//finaliza movimiento dejar pieza en casilla 1

//Ahora para que el brazo funcione se tienen que cumplir las condindiones de que el pin 2 (digitalread 24)
//este activado y el sensor tambiém haya detectado que tiene pieza

if (pin2 == HIGH && pin1 == LOW && sensor == LOW) {
  Serial.println("Finaliza movimiento. pieza en casilla 1");

Vas probando estas acciones y te aseguras que cada estado lógico se cumple tal como lo imagináste. Te sorprenderás de lo que puede pasar.
Te hecho te aseguro que cada acción se repite muchas veces.