Estoy tratando de controlar dos servos a la vez usando Arduino UNO y Arduino Motor Shield. Mis servos se modifican para que puedan trabajar con un movimiento constante.
Cuando envío el primer pedido myservoP.write(180);
(velocidad completa) funciona bien; sin embargo, cuando trato de ordenar a mi servo que cambie de dirección ( myservoP.write(0);
), inmediatamente Arduino se bloquea y se reinicia.
Al principio pensé que podría ser un problema con la fuente de alimentación, pero después de probarlo con mi programa (que se detalla a continuación), estoy empezando a pensar que es un problema con el búfer o la memoria. Sin demoras, el Arduino se bloquea después de unas 10 iteraciones. Con el retraso (10), se bloqueará después de aproximadamente 90 iteraciones. Con retraso (20), Arduino puede repetir un ciclo completo 5 veces, de principio a fin. Durante el sexto intento, se estrelló de nuevo.
Aquí está mi código:
#include <Servo.h>
Servo myservoL;
Servo myservoP;
int i;
void setup()
{
delay(2000);
myservoL.attach(9); // attaches the servo on pin 9 to the servo object
myservoP.attach(10); // attaches the servo on pin 10 to the servo object
Serial.begin(9600);
}
void loop()
{
for(i=180; i>=0; i--)
{
delay(20);
Serial.println(i);
myservoP.write(i);
myservoL.write(i);
}
for(i=0; i<=190; i++)
{
delay(20);
Serial.println(i);
myservoP.write(i);
myservoL.write(i);
}