Bonjour à tous !
Si cela intéresse quelqu’un j'ai trouvé une solution, pas très élégante mais qui fonctionne !
Se passer de servo.h...
La durée d'un signal sur l'entrée de commande du servo permet de lui demander d'atteindre un angle,
il semble que 500 micro corresponde environ à 0° et 2500 environ à 90°.
Il n'y a pas de sécurité sur les valeurs envoyées, une valeur trop petite ou trop grande ferait "forcer" le servo !!!
Exemple de code :
#include <ArduinoRobot.h>
#include <Wire.h>
#include <SPI.h>
int servopin = D0;
void setup() {
pinMode (servopin, OUTPUT);
}
void Tourne(int angle) {
int val = map(angle,0,180,500,2500);
for (int a = 0; a < 15; a++) {
digitalWrite(servopin, HIGH);
delayMicroseconds(val);
digitalWrite(servopin, LOW);
delay(20);
}
}
void loop() {
Tourne(45);
delay(2000);
Tourne(90);
delay(2000);
Tourne(135);
delay(2000);
}
Le nombre de passage dans la boucle est à ajuster en fonction de la vitesse du servo et de sa charge.
Pas très élégant car on ne sait pas si le servo est bien arrivé à l'angle demandé, mais si cela peut dépanner...
A une prochaine !...