juguete grua dos servos cinco pulsadores

Buenos días,

Soy bastante novato en el tema de arduino pero me he aventurado a hacerle una grua de madera con una brazo que tiene dos servos y cinco pulsadores.
la intención es que cuando se pulse un pulsador el servo incremente o disminuya poco a poco y que al soltarlo se quede en la posición que está. luego he puesto otro pulsador que lo que hace es poner los servos en la posición inicial (se recoge la grua).
El problema es que la grua hace el loco y no responde a los pulsadores y no sé donde está el error, si alguien me pudiera echar una mano se lo agradecería (y mi hijo también).

Los pulsadores tienen una resistencia pulldown y lo estoy haciendo con un arduino nano.

Gracias.

#include <Servo.h>

Servo servo_superior;  // Definimos los servos que vamos a utilizar
Servo servo_inferior;

int posicion_servo_inferior; // 
int posicion_servo_superior; // las posiciónes de los servos en cada momento
int posicion_servo_inicial_superior =90;
int posicion_servo_inicial_inferior =90;

const int pulsador_izquierda = 2; // Definimos el número de pin servo superior
const int pulsador_derecha   = 3; // para cada uno de los pulsadores servo superior
const int pulsador_izquierda_inferior = 4;  // pulsador servo inferior
 const int pulsador_derecha_inferior = 5; //  pulsador servo inferior
 const int pulsador_inicio = 6;           //  pulsador servos posicion inicial

 
int estado_pulsador_izquierda = 0; // Variables para leer el estado del pulsador
int estado_pulsador_derecha   = 0; 
int estado_pulsador_izquierda_inferior = 0;
int estado_pulsador_derecha_inferior = 0;
int estado_pulsador_inicio = 0;
int incremento_de_angulo       = 1; // Incremento que queremos cada vez que pulsamos

void setup()  // Comenzamos la configuración de los pines
{ 
servo_superior.attach(10) ; // Difinimos los pines de salida para cada servo
servo_inferior.attach(9) ;

pinMode(pulsador_izquierda, INPUT); // Difinimos los pines para la señal de
pinMode(pulsador_derecha,   INPUT); // los pulsadores como entadas
pinMode(pulsador_izquierda_inferior, INPUT);
 pinMode(pulsador_derecha_inferior, INPUT);
 pinMode(pulsador_inicio, INPUT);
servo_superior.write(posicion_servo_inicial_superior); //inicia posiciones dadas en la constante posicion inicial
servo_inferior.write(posicion_servo_inicial_inferior);

    estado_pulsador_izquierda = digitalRead(pulsador_izquierda); // Leemos el estado de cada uno de los pulsadores
 estado_pulsador_derecha   = digitalRead(pulsador_derecha)  ; 
 estado_pulsador_izquierda_inferior = digitalRead(pulsador_izquierda_inferior);
 estado_pulsador_derecha_inferior = digitalRead(pulsador_derecha_inferior); 
 estado_pulsador_inicio = digitalRead(pulsador_inicio); 


}

void loop() {



while (estado_pulsador_izquierda == HIGH)                                               
{                                    
     posicion_servo_superior = posicion_servo_superior + incremento_de_angulo;         
     servo_superior.write(posicion_servo_superior);                                 
                                                                        
}


while (estado_pulsador_derecha == HIGH) {                                   
 
    posicion_servo_superior = posicion_servo_superior - incremento_de_angulo;     
    servo_superior.write(posicion_servo_superior);                               
               
}

while (estado_pulsador_izquierda_inferior == HIGH) {
    posicion_servo_inferior = posicion_servo_inferior + incremento_de_angulo;
    servo_inferior.write(posicion_servo_inferior);

    
}

while (estado_pulsador_derecha_inferior == HIGH) {
    posicion_servo_inferior = posicion_servo_inferior - incremento_de_angulo;
    servo_inferior.write(posicion_servo_inferior);
   
  
}

 if (estado_pulsador_inicio == HIGH) {
       posicion_servo_superior = posicion_servo_inicial_superior;
       servo_superior.write (posicion_servo_inicial_superior);
       posicion_servo_inferior = posicion_servo_inicial_inferior;
       servo_inferior.write (posicion_servo_inicial_inferior);
  }
}

**Moderador:**Uso de tags para postear códigos

no tienes un control del valor que adoptan las variables que controlan las posiciones de los servos,que suelen ir de 0 a 180 ,es decir cada vez que incrementas alguna de estas variables debes controlar que su valor no exceda de 180 ni sea menor a 0.

Ok,
Gracias por tu respuesta, finalmente funcionó aunque ahora le he puesto dos potenciómetros y queda mucho mejor