Hexapod - probleme controler 20 servos avec 2 PCA9685

Bonjour,
Voilà je viens de terminer le cablage de mon hexapod:


Le probleme c'est que quand je lance le programme, les pattes font n'importe quoi même quand je ne leur donne aucune valeur.

Le code:

#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>

Adafruit_PWMServoDriver pwm1 = Adafruit_PWMServoDriver(0x40);
Adafruit_PWMServoDriver pwm2 = Adafruit_PWMServoDriver(0x41);

void setup() {
  Serial.begin(9600);
  Serial.println("8 channel Servo test!");

  pwm1.begin();
  pwm1.setPWMFreq(60);  
  
  pwm2.begin();
  pwm2.setPWMFreq(60);
  
  delay(1000);
}


void loop() {
 
//---------------------

pwm1.setPWM(7, 0, 334);
 
pwm1.setPWM(4, 0, 334);
pwm1.setPWM(5, 0, 334);
pwm1.setPWM(6, 0, 334);

pwm1.setPWM(8, 0, 334);
pwm1.setPWM(9, 0, 334);
pwm1.setPWM(10, 0, 334);

pwm1.setPWM(12, 0, 334);
pwm1.setPWM(13, 0, 334);
pwm1.setPWM(14, 0, 334);

//---------------------

pwm2.setPWM(8, 0, 334);

pwm2.setPWM(11, 0, 334);
pwm2.setPWM(10, 0, 334);
pwm2.setPWM(9, 0, 334);

pwm2.setPWM(7, 0, 334);
pwm2.setPWM(6, 0, 334);
pwm2.setPWM(5, 0, 334);

pwm2.setPWM(3, 0, 334);
pwm2.setPWM(2, 0, 334);
pwm2.setPWM(1, 0, 334);

//---------------------


}

PS
-j'avais déjà fais fonctionner un seul PCA9685 et j'avais trouvé 334 pour un position a 90°.
-J'ai peux être modifié la valeur de fréquence en copiant collant qqpart

Merci de votre aide :slight_smile:

quelqu'un aurait une idée ? svp

qui connait un forum actif ?

Ton problème n'est pas simple : si tu n'as pas de réponse c'est soit qu'on n'a pas les connaissances pour y répondre, soit qu'il est mal posé.

Que veux-tu dire par " les pattes font n'importe quoi même quand je ne leur donne aucune valeur" ? Tu leur donnes une consigne de 334, donc elles doivent s'y positionner et n'en plus bouger. Qu'est-ce qui se passe ?

Tu utilises des PCA9685, moi je ne connais pas ces composants, je peux difficilement aider.

As-tu vérifié, re-vérifié et re-re-vérifié ton câblage ? C'est souvent là que se trouve le problème, car ton code est tout simple et je n'y vois rien de mal.

As-tu testé les exemples de la bibliothèque Adafruit_PWMServoDriver ? Si aucun ne fonctionne, c'est probablement un problème de câblage...

Problème resolu,
Merci de ta reponse, je viens de revérifier mon montage et j'ai effectivement fais une erreur. J'ai utilisé le 3,3v de l'alim au lieu du 5v. Maintenant sa deconne plus :smiley:

hello et tu es bien cablé sur A4 et A5?

dans les exemples, la déclaration donnée est différente de la tienne pour de l'I2C

#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>

Adafruit_PWMServoDriver pwm1 =  Adafruit_PWMServoDriver(&Wire, 0x40);
Adafruit_PWMServoDriver pwm2 =  Adafruit_PWMServoDriver(&Wire, 0x40);

void setup() {
  Serial.begin(9600);
  Serial.println("8 channel Servo test!");

  pwm1.begin();
  pwm1.setPWMFreq(60);  
  
  pwm2.begin();
  pwm2.setPWMFreq(60);
  
  delay(1000);
}


void loop() {
 
//---------------------

pwm1.setPWM(7, 0, 334);
 
pwm1.setPWM(4, 0, 334);
pwm1.setPWM(5, 0, 334);
pwm1.setPWM(6, 0, 334);

pwm1.setPWM(8, 0, 334);
pwm1.setPWM(9, 0, 334);
pwm1.setPWM(10, 0, 334);

pwm1.setPWM(12, 0, 334);
pwm1.setPWM(13, 0, 334);
pwm1.setPWM(14, 0, 334);

//---------------------

pwm2.setPWM(8, 0, 334);

pwm2.setPWM(11, 0, 334);
pwm2.setPWM(10, 0, 334);
pwm2.setPWM(9, 0, 334);

pwm2.setPWM(7, 0, 334);
pwm2.setPWM(6, 0, 334);
pwm2.setPWM(5, 0, 334);

pwm2.setPWM(3, 0, 334);
pwm2.setPWM(2, 0, 334);
pwm2.setPWM(1, 0, 334);

//---------------------


}