LOCODUINO

Parlons Arduino => Composants => Discussion démarrée par: babskwal le mai 21, 2022, 07:29:43 pm

Titre: PCA9685 et servos
Posté par: babskwal le mai 21, 2022, 07:29:43 pm
Bonsoir,
Peut-on lire la position d'un servo à travers un PCA9685, c'est à dire l'équivalent d'un "servo.read()" quand le servo est branché sur l'Arduino ?
Titre: Re : PCA9685 et servos
Posté par: bobyAndCo le mai 22, 2022, 06:15:54 pm
servo.read() de la bibliothèque servo n'est pas (comme son nom pourrait le laisser croire) une lecture de l'information qui serait stockée dans le servo par exemple mais tout simplement servo.read() est une méthode de la class Servo qui retourne la dernière valeur en mémoire écrite au travers d'un servo.write(xxx) ou servo.writeMicroseconds(xxx).

Pour illustrer ce que je dis, imaginez que vous fassiez tourner manuellement le servo pour lui faire changer d'angle, servo.read() ne retournera pas la position physique mais la valeur stockée dans le programme !

C'est donc uniquement logiciel. Il faut savoir quelle bibliothèque vous utilisez, et regarder le fichier de définition (.h). Mais il serait bien étonnant que cette méthode retournant la position n'existe pas.
Titre: Re : PCA9685 et servos
Posté par: Jean-Luc le mai 25, 2022, 10:53:00 am
Bonjour,

quelle bibliothèque utilisez vous ? Celle d'Adafruit ?
Titre: Re : PCA9685 et servos
Posté par: babskwal le juin 18, 2022, 03:11:39 pm
Bonjour,
Oui !
Titre: Re : PCA9685 et servos
Posté par: Jean-Luc le juin 19, 2022, 01:38:14 pm
Dans ce cas, je vois qu'il y a une fct getPWM pour lire la valeur de PWM. C'est lu du PCA.

La valeur récupérée ne correspondra pas à celle mise via writeMicroseconds car cette fct calcule une valeur de PWM à envoyer au PCA :

https://github.com/adafruit/Adafruit-PWM-Servo-Driver-Library/blob/d265f74fc0e66632e6dafc787c95b008f3245550/Adafruit_PWMServoDriver.cpp#L283