Buenas tardes:
Sigo trasteando con el movimiento simultaneo de varios servos, estoy usando una placa que me recomendó surbyte la adafruit PCA9685, el codigo que estoy usando junto con la librería de adafruit es este
#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>
Adafruit_PWMServoDriver servos = Adafruit_PWMServoDriver(0x40);
unsigned int pos0=172; // ancho de pulso en cuentas para pocicion 0°
unsigned int pos180=565; // ancho de pulso en cuentas para la pocicion 180°
void setup() {
servos.begin();
servos.setPWMFreq(60); //Frecuecia PWM de 60Hz o T=16,66ms
}
void setServo(uint8_t n_servo, int angulo) {
int duty;
duty=map(angulo,0,180,pos0, pos180);
servos.setPWM(n_servo, 0, duty);
}
void loop() {
setServo(0,45);
delay(100);
setServo(0,50);
delay(100);
setServo(0,55);
delay(100);
setServo(0,60);
delay(100);
setServo(0,65);
delay(100);
setServo(0,70);
delay(100);
setServo(0,75);
delay(100);
setServo(0,80);
delay(100);
setServo(0,85);
delay(100);
delay(2000);
setServo(0,5);
delay(2000);
setServo(0,90);
delay(2000);
setServo(0,45);
delay(10000);
}
Como se puede ver de momento solo estoy trasteando con un servo, el problema que me encuentro es que no se modificar la velocidad a la que se mueve el servo, he probado con Delay pero solo retarda el tiempo que tarda en hacer la siguiente función, la solución que he encontrado es poner los grados de movimiento por ejemplo de 5 en 5 grados con un retardo de 200ms como se puede ver en el codigo, aunque tengo la sospecha que tiene que haber una forma mucho más facil de hacer que el recorrido de 45 grados a 120 por ejemplo lo haga mucho más despacio. Alguien me podría iluminar un poco?
Gracias