Movimiento gradual de servomotor

Buenas, tengo un código que me permite mover un servomotor tres posiciones por entrada serial. Me gustaría saber como hacer que ese movimiento fuera gradual y sin usar la libreria servo.

int servo=9; //Declara que servo es un entero de valor 9
int i = 0; // Declara que i es un entero de valor 0
int option = 0;

void setup() // Configuración inicial
{
Serial.begin(9600);
pinMode(servo, OUTPUT); // Declara que servo será la Salida digital número 9
}

void loop() //Se repite de manera infinita
{
if (Serial.available()>0){
//leemos la opcion enviada
option=Serial.read();
if(option=='a') {
for(int i=0; i<=50; i++){ // ciclo for que se repetirá 50 veces.
digitalWrite(servo, HIGH); // Salida digital 9 quedará en positivo
delayMicroseconds(1050); // Espera 1450 microsegundos = 1.45 milisegundos
digitalWrite(servo, LOW); // Salida digital 9 quedará en negativo
delayMicroseconds(18950); // Espera 18550 microsegundos = 18.55 milisegundos
}
Serial.print("a = ");
Serial.print("\t");
Serial.print(option);
Serial.print("\n");
}
//delay(2000); //Espera 2000 milisegundos = 2 segundos
if(option=='b') {
for(int i=0; i<=50; i++){ // ciclo for que se repetirá 50 veces.
digitalWrite(servo, HIGH); // Salida digital 9 quedará en positivo
delayMicroseconds(1995); // Espera 2000 microsegundos = 2 milisegundos
digitalWrite(servo, LOW); // Salida digital 9 quedará en negativo
delayMicroseconds(18005); // Espera 18000 microsegundos = 18 milisegundos
}
Serial.print("b = ");
Serial.print("\t");
Serial.print(option);
Serial.print("\n");
}

//delay(2000); //Espera 2000 milisegundos = 2 segundos
if(option=='c') {
for(int i=0; i<=50; i++){ // ciclo for que se repetirá 50 veces.
digitalWrite(servo, HIGH); // Salida digital 9 quedará en positivo
delayMicroseconds(2150); // Espera 2000 microsegundos = 2.5 milisegundos
digitalWrite(servo, LOW); // Salida digital 9 quedará en negativo
delayMicroseconds(17950); // Espera 18000 microsegundos = 17.5 milisegundos
}
Serial.print("c = ");
Serial.print("\t");
Serial.print(option);
Serial.print("\n");
}

}

Muchas gracias.

Moderador:
Por favor, lee las Normas del foro y edita tu código/error usando etiquetas de código.
Ve a edición, luego selecciona todo el código que has publicado, lo cortas y click en </>


This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.