alors pour void loop (void), le (void) c'est pour les pluristes, sinon un simple () fait l'affaire
j'ai compilé ton code galactus!!!! la partie manuel nikel mais la partie auto flanche"ça donne le même résultat, comme lorsque j'emploi le if" le robot avance mais ne prend pas en compte l'état des capteurs donc il ne tourne pas ne recul pas.
Le pire est que si je met dans void loop () automatique(); ça fonctionne très bien , il suffit de mettre un if ou un switch pour que ça flanche
le langage est le c , je travail sur une carte arduino.
Je suis sidéré par ce problème!!!!
int inputPinG = 8;
int inputPinC = 9;
int inputPinD = 10;
int valG = 0;
int valC = 0;
int valD = 0;
void automatique(void)
{
valG = digitalRead(inputPinG);
valC = digitalRead(inputPinC);
valD = digitalRead(inputPinD);
if(valG&&valC&&valD==HIGH)
advance(50,50);
else if (!valG&&valC&&valD==HIGH)
advance(70,50);
else if (valG&&valC&&!valD==HIGH)
advance(50,70);
else turn_R(50,50);
}
int E1 = 5; //M1 vitesse
int E2 = 6; //M2 vitesse
int M1 = 4; //M1 Direction
int M2 = 7; //M1 Direction
void manuel(void)
{
char f = Serial.read();
switch (f)
{
case 'z'://avancer
advance (50,50); //réglage vitesse
break;
case 'w'://reculer
back_off (50,50);
break;
case 'q'://virage gauche
advance (70,50); //réglage vitesse
break;
case 's'://virage droite
advance (50,70); //réglage vitesse
break;
case 'a'://tourner sur place à gauche
turn_L (50,50);
break;
case 'x'://tourner sur place à droite
turn_R (50,50);
break;
case 'c':// stop
advance (0,0);
break;
}
}
void stop(void) //Stop
{
digitalWrite(E1,LOW);
digitalWrite(E2,LOW);
}
void advance(char a,char <img src='http://www.robot-maker.com/forum/public/style_emoticons/<#EMO_DIR#>/cool.gif' class='bbc_emoticon' alt='B)' /> //avancer
{
analogWrite (E1,a);
digitalWrite(M1,LOW);
analogWrite (E2, <img src='http://www.robot-maker.com/forum/public/style_emoticons/<#EMO_DIR#>/cool.gif' class='bbc_emoticon' alt='B)' /> ;
digitalWrite(M2,LOW);
}
void back_off (char a,char <img src='http://www.robot-maker.com/forum/public/style_emoticons/<#EMO_DIR#>/cool.gif' class='bbc_emoticon' alt='B)' /> //reculer
{
analogWrite (E1,a);
digitalWrite(M1,HIGH);
analogWrite (E2, <img src='http://www.robot-maker.com/forum/public/style_emoticons/<#EMO_DIR#>/cool.gif' class='bbc_emoticon' alt='B)' /> ;
digitalWrite(M2,HIGH);
}
void turn_L (char a,char <img src='http://www.robot-maker.com/forum/public/style_emoticons/<#EMO_DIR#>/cool.gif' class='bbc_emoticon' alt='B)' /> //tourner à gauche
{
analogWrite (E1,a);
digitalWrite(M1,HIGH);
analogWrite (E2, <img src='http://www.robot-maker.com/forum/public/style_emoticons/<#EMO_DIR#>/cool.gif' class='bbc_emoticon' alt='B)' /> ;
digitalWrite(M2,LOW);
}
void turn_R (char a,char <img src='http://www.robot-maker.com/forum/public/style_emoticons/<#EMO_DIR#>/cool.gif' class='bbc_emoticon' alt='B)' /> //tourner à droite
{
analogWrite (E1,a);
digitalWrite(M1,LOW);
analogWrite (E2, <img src='http://www.robot-maker.com/forum/public/style_emoticons/<#EMO_DIR#>/cool.gif' class='bbc_emoticon' alt='B)' /> ;
digitalWrite(M2,HIGH);
}
void setup(void)
{
int i;
for(i=5;i<=8;i++)
pinMode(i, OUTPUT);
pinMode(inputPinG, INPUT); // declare Infrared sensor as input
pinMode(inputPinC, INPUT); // declare Infrared sensor as input
pinMode(inputPinD, INPUT); // declare Infrared sensor as input
Serial.begin(19200); //Set Baud Rate
}
void loop()
{
char val = Serial.read();
switch(val){
case 'j':
automatique();
break;
default:
manuel();
}
}

















