Parlons Arduino > Composants

PCA9685 et servos

(1/1)

babskwal:
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 ?

bobyAndCo:
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.

Jean-Luc:
Bonjour,

quelle bibliothèque utilisez vous ? Celle d'Adafruit ?

babskwal:
Bonjour,
Oui !

Jean-Luc:
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

Navigation

[0] Index des messages

Utiliser la version classique