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(); } }