posicionamiento de un servo por puerto serie

Hola a todos:

soy nuevo en todo esto, he adquirido recientemente una ARDUINO MEGA porque me apetecía juguetear con ella, aprender un poco en cuanto la programación ya que mis conocimientos son básicos y me gustaría publicar mis primeros avances porque a alguien igual le puede servir de ayuda.

Bien, he conseguido manejar un servo, al que enviamos el set point de la posición a través del puerto serie.

#include <Servo.h>
#include <Servo.h>

Servo myservo;

int pos = 0;
int a;

void setup() {
Serial.begin(9600);
myservo.attach(9);

}

char cadena[24];
byte contador=0;
int valor = 0;
void loop(){

for(a; a<1; a++){
Serial.print("Introduzca posicion de servo :");
}

if(Serial.available()){
memset(cadena, 0, sizeof(cadena));

while (Serial.available()>0){
delay(5);
cadena[contador]=Serial.read();
contador++;

}
valor=atoi(cadena);
valor = min(valor, 180); //establece valor maximo
valor = max(valor, 0); //establece valor minimo
Serial.print(valor); //imprime en pantalla el valor introducido
Serial.println(" grados");
myservo.write(valor); //establece el valor como posicion myservo
a=0; //reiniciamos a para volver a mostrar aviso para introduccion de datos
contador=0;

delay(100);
}
}