Bonjour tous le monde, nous avons modifié le code comme vous nous l'avez suggéré.
Le problème c'est qu'avec le switch le programme ne fonctionne plus :~
Voici le code:
#include <Wire.h>
#include <Adafruit_MotorShield.h>
#include "utility/Adafruit_PWMServoDriver.h"
int Z=0;
int S=0;
Adafruit_MotorShield AFMS = Adafruit_MotorShield();
Adafruit_DCMotor *moteurGauche = AFMS.getMotor(1);
Adafruit_DCMotor *moteurDroit = AFMS.getMotor(3);
char touche;
void setup()
{
Serial.begin(9600);
Serial.println("Robot curiosity TS6 SI");
AFMS.begin();
moteurGauche->setSpeed(250);
moteurDroit->setSpeed(250);
moteurGauche->run(FORWARD);
moteurDroit->run(BACKWARD);
moteurGauche->run(RELEASE);
moteurDroit->run(RELEASE);
}
void loop()
{
uint8_t i;
if (Serial.available() > 0) // On detecte un appui sur une touche
{
int touche = Serial.read(); // On lit la valeur de la touche appuyée
switch (touche){
case 1:
Serial.print("Avancer");
moteurGauche->run(FORWARD);
moteurDroit->run(FORWARD);
for (i=0; i<255; i++)
{
moteurGauche->setSpeed(i);
moteurDroit->setSpeed(i);
}
for (i=255; i!=0; i--)
{
moteurGauche->setSpeed(i);
moteurDroit->setSpeed(i);
}
break;
case 2:
Serial.print("Reculer");
moteurGauche->run(BACKWARD);
moteurDroit->run(BACKWARD);
for (i=0; i<255; i++) {
moteurGauche->setSpeed(i);
moteurDroit->setSpeed(i);
}
for (i=255; i!=0; i--)
{
moteurGauche->setSpeed(i);
moteurDroit->setSpeed(i);
}
break;
}
}
}
Nous avons essayé en remplaçant
case 1:
case 2:
par
case Z //puisque Z est la touche correspond a la touche qui permette "d'avancer"
case S // correspond a la touche permettant de "reculer"
et nous avons l'erreur suivante:
_2.ino: In function 'void loop()':
_2:41: error: 'Z' cannot appear in a constant-expression
_2:59: error: 'S' cannot appear in a constant-expression
Nous comprenons pas très bien l'erreur en elle-même seulement nous pensons que la variables Z et S ne peuvent pas être considérées comme une condition ?
Qu'est ce que nous avons loupé pour que notre programme fonctionne s'il vous plait
?