Bonjour,
J'ai trouvé un code de base pour commander 2 servos moteur avec un arduino mega 2560 et un PCA 9685 d'adafruit , les 2 servos sont connectés à la broche 1 et 9 du PCA 9685. J'ai essayé et cela fonctionne très bien . Je voudrais ajouter plusieurs servos moteur ( on peut commander jusqu'à 16 sur un PCA 9685) ,
si je veux ajouter 2 autres servos moteur par exemple a la broche 4 et 10 du PCA 9685 et faire tourner dans des angles de 45° ou 90° comment faire dans le code de base , quels sont les lignes codes à ajouter et où les placer ?J 'ai essayé plusieurs façon mais sans succès . Quelqu'un peut-il m'aider ?
Voici le code de base :
[cod#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>
// Utilisation de l'adresse par défaut 0x40 du Breakout.
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver( 0x40 );
// Suivant le type de servo utilisé, la largeur d'impulsion minimale et Maximale
// peut changer. L'idéal est de sélectionner des valeurs aussi petites et aussi
// grande que possible sans jamais atteindre la butée de blocage du servo-moteur.
// Vous aurrez peut-etre besoin de modifier ces valeurs pour les faire correspondrent
// à votre type de servo!
#define SERVOMIN 150 // La longueur d'impulsion 'minimale' (valeur du compteur, max 4096)
#define SERVOMAX 600 // La longueur d'impulsion 'maximale' (valeur du compteur, max 4096)
// Servos Commandés - Numéro de sorties sur le breakout
uint8_t servo1 = 1;
uint8_t servo9 = 9;
void setup() {
Serial.begin(9600);
Serial.println("Controle des Servo Moteur #1 et #9!");
pwm.begin();
pwm.setPWMFreq(60); // Les servo sont mis-à-jour à ~60 Hz
Serial.println("Fin de setup()");
}
void loop() {
//--- Controle du Premier Servo (no 1) ---
Serial.println("Servo #1 à 45 degrés");
// Transformation de degré (0 à 180) en pulse (SERVOMIN à SERVOMAX)
int pulseLen = map( 45, 0, 180, SERVOMIN, SERVOMAX );
pwm.setPWM(servo1, 0, pulseLen);
delay(1000);
delay(1000);
//--- Controle du Deuxieme Servo (no 9) ---
Serial.println("Servo #9 à 30 degrés");
pulseLen = map( 30, 0, 180, SERVOMIN, SERVOMAX );
pwm.setPWM(servo9, 0, pulseLen);
delay(1000);
//--- Controle du Premier Servo (no 1) ---
Serial.println("Servo #1 à 120 degrés");
// Transformation de degré (0 à 180) en pulse (SERVOMIN à SERVOMAX)
pulseLen = map( 120, 0, 180, SERVOMIN, SERVOMAX );
pwm.setPWM(servo1, 0, pulseLen);
delay(1000);
//--- Controle du Deuxieme Servo (no 9) ---
Serial.println("Servo #9 à 150 degrés");
pulseLen = map( 150, 0, 180, SERVOMIN, SERVOMAX );
pwm.setPWM(servo9, 0, pulseLen);
delay(1000);
//--- Les deux servo à 0 ---
Serial.println("Servo #1 et #9 à 150 degrés");
pulseLen = map( 0, 0, 180, SERVOMIN, SERVOMAX );
pwm.setPWM(servo1, 0, pulseLen);
pwm.setPWM(servo9, 0, pulseLen);
delay(3000);
}
e]