Tout d'abord, merci de vos réponses qui m'ont, pour certaines, éclairé.
Etape n°1: qu'est-ce qui ne fonctionne pas ? La commande des moteurs ou la liaison série ?
J'ai fais ce que vous m'avez conseillé, c'est-à-dire de créer 2 programmes. Le programme de commande des moteurs fonctionne parfaitement (le soucis ne vient donc pas de ce côté là). Et le programme de la liaison série fonctionne lui aussi. Je me suis donc longuement penché sur mon programme général pour savoir pourquoi je ne pouvais pas commander mes moteurs par liaison série. J'ai trouvé certaines erreurs et je les ai ensuite corrigées. Mon nouveau programme fonctionne donc aux petits oignons, mais, une erreur (assez gênante) persiste. Mon programme récupère les chaînes de caractères rentrées dans le Serial monitor (ou envoyées depuis un logiciel fait en C#), les interprètes et effectue des actions. Exemple : j'envoie un "A", le programme effectue l'action A; j'envoie un"B", le programme effectue l'action B et ainsi de suite. L'erreur est donc celle ci : Le programme reconnaît les chaînes rentrées (il les affiche dans le monitor), mais il effectue soit l'action A, soit l'action B (quelle que soit la commande envoyée). En gros, si j'envoie un "A", il fait l'action A et si j'envoie n'importe quelle autre lettre, il fait l'action B. J'ai donc besoin de votre aide sur ce point. Merci d'avance pour vos réponses.
#include <Wire.h>
#include <Adafruit_MotorShield.h>
#include "utility/Adafruit_PWMServoDriver.h"
Adafruit_MotorShield AFMS = Adafruit_MotorShield();
Adafruit_StepperMotor *myMotor1 = AFMS.getStepper(200, 1);
Adafruit_StepperMotor *myMotor2 = AFMS.getStepper(200, 2);
void setup() {
Serial.begin(9600);
AFMS.begin();
myMotor1->setSpeed(1000);
myMotor2->setSpeed(1000);
}
void loop()
{
debut:
while(Serial.available()>0)
{
String chaine;
chaine = Serial.readStringUntil('\n');
if (chaine=="moteur1")
{
myMotor1->step(1000, FORWARD, SINGLE);
Serial.println(chaine);
goto debut;
}
if (chaine=="moteur2");
{
myMotor2->step(1000, FORWARD, SINGLE);
Serial.println(chaine);
goto debut;
}
if (chaine=="moteur3");
{
myMotor1->step(1000, BACKWARD, SINGLE);
Serial.println(chaine);
goto debut;
}
if (chaine=="moteur4");
{
myMotor2->step(1000, BACKWARD, SINGLE);
Serial.println(chaine);
goto debut;
}
}
}
Merci encore une fois pour avoir pris le temps de me lire.