@J-M-L j'ai fait les modifications que vous m'avez recommandé et ça fonctionne.
Voici le constructeur:
/**
* Constructor
* @param addr address of the PCA9685 on the I2C bus.
*/
ServoDriverPCA9685::ServoDriverPCA9685(const uint8_t addr, float frequence, uint32_t oscillatorFrequency) {
addr_ = addr;
frequence_ = frequence;
oscillatorFrequency_ = oscillatorFrequency;
}
Une méthode d'initialisation:
/**
* Initialize the driver.
* Setups the I2C interface and hardware.
* @return true if successful, otherwise false.
*/
bool ServoDriverPCA9685::initDriver(uint8_t prescale) {
if (addr_ != 0x40) {
pwmPCA9685 = Adafruit_PWMServoDriver(addr_);
} else {
pwmPCA9685 = Adafruit_PWMServoDriver();
}
bool resInit = pwmPCA9685.begin(prescale);
if (resInit) {
pwmPCA9685.setPWMFreq(frequence_);
pwmPCA9685.setOscillatorFrequency(oscillatorFrequency_);
}
return resInit;
}
Et au niveau du code Arduino:
ServoDriverPCA9685 servoDriverPCA9685(0x40, 50.0, 27000000);
bool initBreakout = false;
void setup() {
Serial.begin(19200);
initBreakout = servoDriverPCA9685.initDriver();
if (initBreakout) {
Serial.println(F("Init arm"));
initArm();
} else {
Serial.println(F("Erreur d'initialisation du breakout."));
}
}
Merci.
Jocelyn