Bonjour à tous.
J'ai un drôle de soucis avec un programme multi-fichiers, qui bien qu'il compile et se transfert sans problème, ne se lance pas.
J'ai créé une classe qui utilise la librairie Adafruit PWMServoDriver:
#include "Adafruit_PWMServoDriver.h"
class ServoDriverPCA9685 {
public:
/**
* Constructor
* @param addr address of the PCA9685 on the I2C bus - 0x40 by default.
* @param frequence PWM frequency for the entire chip - by default 50.0.
* @param oscillatorFrequency the internally tracked oscillator used for freq calculations - by default 25000000.
*/
explicit ServoDriverPCA9685(uint8_t addr = 0x40, float frequence = 50.0, uint32_t oscillatorFrequency = 25000000);
/**
* Copy constructor
* @param other ServoDriverPCA9685 object.
*/
ServoDriverPCA9685(const ServoDriverPCA9685 &other);
.....
et j'ai donc deux fichiers (ServoDriverPCA9685.cpp et ServoDriverPCA9685.h).
Dans le fichier principal (.ino) j'inclus ServoDriverPCA9685.h et aussi Adafruit_PWMServoDriver.h tel qu'il est recommandé de faire lorsque l'on utilise des librairies dans les fichiers "externes".
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."));
}
}
void loop() {...}
Lorsque le programme est transféré dans la carte il ne démarre pas, un peu comme si la carte était bloquée. On ne passe ni dans le setup() et ni dans loop(). Si je commente le code faisant référence à ServoDriverPCA9685, cela refonctionne. Le problème doit je pense venir du fait d'utiliser une librairie dans un fichier externe même si cela est faisable. Ce qui m'ennuie c'est que je n'ai aucune erreur de compilation.
Si quelqu'un a une petite idée, je suis preneur.
Jocelyn