Problema programación mano articulada

Un saludo a todos quisiera que me ayuden por favor tengo este código soy principiante en esto de arduino, el código actual es simple pero el problema es que al aplastar una de las letras que da la orden como alzar el brazo de sube de corrido y lo que deseo es subirlo de poco en poco, con una de las 3 opciones: Que mientras se tenga aplastado la tecla lo haga, lo haga por tiempo es decir 1 segundo y pare o que lo haga por angulos.
Les agradeciria mucho me ayuden con esto por favor

Este es el código actual:

#include <SoftwareSerial.h>
int motor0Pin10 = 13;
int motor1Pin7 = 7; // Pines del Motor
int motor1Pin6 = 6;
int motor2Pin5 = 5;
int motor2Pin4 = 4;
int motor3Pin3 = 3;
int motor3Pin2 = 2;
int motor4Pin1 = 9;
int motor4Pin0 = 8;
int estado=0;

void setup() {

Serial.begin(9600);
pinMode(motor0Pin10, OUTPUT);
pinMode(motor1Pin7, OUTPUT);
pinMode(motor1Pin6, OUTPUT);
pinMode(motor2Pin5, OUTPUT); // Configuración de los Pines como salida digital
pinMode(motor2Pin4, OUTPUT);
pinMode(motor3Pin3, OUTPUT);
pinMode(motor3Pin2, OUTPUT);
pinMode(motor4Pin1, OUTPUT);
pinMode(motor4Pin0, OUTPUT);
}

void loop() {

if (Serial.available()>0){
estado = Serial.read();
}
if (estado =='0'){
digitalWrite(motor0Pin10, LOW);
digitalWrite(motor1Pin7, LOW);
digitalWrite(motor1Pin6, LOW);
digitalWrite(motor2Pin5, LOW);
digitalWrite(motor2Pin4, LOW);
digitalWrite(motor3Pin3, LOW);
digitalWrite(motor3Pin2, LOW);
digitalWrite(motor4Pin1, LOW);
digitalWrite(motor4Pin0, LOW);
delay(10000);
} else
if (estado =='a'){ //baja
digitalWrite(motor0Pin10,HIGH);
digitalWrite(motor1Pin7, HIGH);
digitalWrite(motor1Pin6, LOW);
delay(2);

} else

if (estado =='b'){ //arriba
digitalWrite(motor0Pin10,HIGH);
digitalWrite(motor1Pin7, LOW);
digitalWrite(motor1Pin6, HIGH);
delay(2);

} else

if (estado =='c'){ //derecha
digitalWrite(motor0Pin10,HIGH);
digitalWrite(motor2Pin5, LOW);
digitalWrite(motor2Pin4, HIGH);
delay(2);

} else

if (estado =='d'){ //izquierda
digitalWrite(motor0Pin10,HIGH);
digitalWrite(motor2Pin5, HIGH);
digitalWrite(motor2Pin4, LOW);
delay(2);
} else

if (estado =='e'){ //cierra la pinza
digitalWrite(motor0Pin10,HIGH);
digitalWrite(motor3Pin3, LOW);
digitalWrite(motor3Pin2, HIGH);
delay(2);

} else

if (estado =='f'){ //abre la pinza
digitalWrite(motor0Pin10,HIGH);
digitalWrite(motor3Pin3, HIGH);
digitalWrite(motor3Pin2, LOW);
delay(2);
} else

if (estado =='g'){ //muñeca baja
digitalWrite(motor0Pin10,HIGH);
digitalWrite(motor4Pin1, LOW);
digitalWrite(motor4Pin0, HIGH);
delay(2);

} else

if (estado =='h'){ //muñeca arriba
digitalWrite(motor0Pin10,HIGH);
digitalWrite(motor4Pin1, HIGH);
digitalWrite(motor4Pin0, LOW);
delay(2);

}
}

Gracias amigos!!

Hola.

En primer lugar lee las normas del foro sobre como postear el código, y modifica tu post (tal y como lo pones es dificil de seguir).

En segundo lugar da la impresion de que usas motor paso a paso y estos motores se manejar de forma distinta a los convencionales.

Aqui tienes la libreria necesaria para el manejo de estos motores, asi como algunos ejemplos stepper library
La libreria viene con el IDE de Arduino y solo tendras que incluirla en tu código para poderla usar.

Saludos.