J'ai fais les test avec .
Il en ressort que j'ai cette ligne :
motorshield_1.begin(); // Initialise la communication avec shield à la fréquence max ; par defaut : 1.6KHz (1600 bauds/s).
qui me fait des interférences/conflits visiblement avec tout le reste.
Cette ligne je l'ai à l'identique dans mon programme qui fonctionne :
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| #include <Adafruit_MotorShield.h>
Adafruit_MotorShield motorshield_1 = Adafruit_MotorShield(); // Crée un objet "Adafruit_MotorShield" (qui est un shield adafruit controleur moteur), de nom "motorshield_1", avec l'adresse I2C par defaut (sans cavaliers sur la carte pour les adresses).
Adafruit_StepperMotor *moteur = motorshield_1.getStepper(200, 2); // Créé un objet "Adafruit_StepperMotor" (moteur pas à pas), de nom "moteur", avec en paramètres, nombre de pas par tours ("200"), et port sur le shield : ("2" : M3 et M4)
void setup()
{
motorshield_1.begin(); // Initialise la communication avec shield à la fréquence max ; par defaut : 1.6KHz (1600 bauds/s).
moteur->setSpeed(350); // Initialise la vitesse max du moteur "moteur" à 350 rpm.
wifi.begin(); // Initialise le serveur wifi.
wifi.println(F("Web Server is up")); // Préviens le serveur que tout est ok et prêt à etre utilisé.
} |
et après c'est le code que j'ai déjà posté (if 10 blabla).
Dans mon nouveau programme je l'ai dans ma classe Motorisation (mon.h) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| class Motorisation
{
public :
Motorisation(Etat_FDC *s_pFinsDeCourses);
private :
Etat_FDC *pFinsDeCourses = NULL;
Servo servo_droit; // Créé un objet "Servo" de nom "servo_droit", représentant le servomoteur de droite.
Servo servo_gauche; // Créé un objet "Servo" de nom "servo_gauche", représentant le servomoteur de gauche.
Adafruit_MotorShield motorshield_1 = Adafruit_MotorShield(); // Crée un objet "Adafruit_MotorShield" (qui est un shield adafruit controleur moteur), de nom "motorshield_1", avec l'adresse I2C par defaut (sans cavaliers sur la carte pour les adresses).
Adafruit_StepperMotor *moteur = motorshield_1.getStepper(200, 2); // Créé un objet "Adafruit_StepperMotor" (moteur pas à pas), de nom "moteur", avec en paramètres, nombre de pas par tours ("200"), et port sur le shield : ("2" : M3 et M4)
}; |
et mon .cpp :
1 2 3 4 5 6 7 8 9 10 11 12 13
| Motorisation::Motorisation(Etat_FDC *s_pFinsDeCourses)
{
pFinsDeCourses = s_pFinsDeCourses;
pinMode (PIN_FDC_BAS, INPUT); // Définit la pin "fdc_haut" (3), comme etant une entrée ("INPUT").
pinMode (PIN_FDC_HAUT, INPUT); // Définit la pin "fdc_bas" (2), comme etant une entrée ("INPUT").
servo_droit.attach(10); // Définit la pin "10", comme etant la sortie du signal pour le servomoteur de droite : "servo_droit".
servo_gauche.attach(9); // Définit la pin "9", comme etant la sortie du signal pour le servomoteur de gauche : "servo_gauche".
motorshield_1.begin(); // Initialise la communication avec shield à la fréquence max ; par defaut : 1.6KHz (1600 bauds/s).
moteur->setSpeed(VITESSE_MOTEUR_RPM); // Initialise la vitesse max du moteur "moteur" à 350 rpm.
} |
Ma question est donc la suivante :
Est-ce que de creer un objet Motorisation avec ma procédure est une erreur et je devrais mettre celle ci dans mon main ?
Et surtout pourquoi ?
Partager