Difficulté de déclaration de fonction - débutant !!

Bonjour,

J'ai utilisé un programme de ¨Avoid collision¨ avec shield L293D sur une MEGA2560 R3, j'utilise les sorties M1 et M4, et tout fonctionnait.

Dans le programme originel ils utilisaient un servo pour diriger le sonar de détection, j'ai enlevé les lignes associé au mouvement du sonar et ca fonctionnait.

Là je tente d'ajouter une commande par IR Remote, car le ¨proto car¨ s'arrête si il rencontre un obstacle sans réussir à l'éviter...

J'ai récupéré le code de lecture du IR et j'ai tenté d'y associer des appels à des fonctions qui semblent être des blocs indépendants .

Ex: en lisant le bouton IR ¨PAUSE¨ je voulais appeler la fonction ; void checkForward () qui est dans le void loop. voir ci-dessous les extraits

if (irrecv.decode(&results)) // have we received an IR signal?

{
switch(results.value)

{
case 0xFF02FD: //PAUSE button pressed
// set all motors forward full speed
Serial.println("FORWARD");

motorSet = "FORWARD";
checkForward();
break;

void checkForward() {
if (motorSet=="FORWARD")
{Serial.println("Forward");
motorR.run(FORWARD); motorL.run(FORWARD); }
}

Bref en compilant on me donne comme erreur que

' checkForward' was not declare in the scope

Je ne comprends pas comment déclarer une fonction... bref très mêlé en ce moment......j'ai lu des tuto sur la déclaration de variable mais comme ce n'est pas vraiment une variable je ne sais comment régler cela....

voir code complet

[code]
#include <IRremote.h>
#include <IRremoteInt.h>

//14CORE OBSTACLE AVOINDACE ROBOT
//======================TEST CODE 
 

 
#include <NewPing.h> // 
#include <AFMotor.h> // You can download the code library below
 
// Ultranic Pin Configuration
 

 
#define TRIG_PIN 22  //A5
#define ECHO_PIN 24  //A4
 
#define MAX_DISTANCE 400
#define MAX_SPEED 200
#define MAX_SPEED_OFFSET -8
 
#define COLL_DIST 20
#define TURN_DIST COLL_DIST+20
#define ACT_TIME 250
 
NewPing sonar(TRIG_PIN, ECHO_PIN, MAX_DISTANCE); 
 
AF_DCMotor motorR(1, MOTOR12_1KHZ); // Set motor , MOTOR12_1KHZ); // Set motor Right, 1kHz PWM
AF_DCMotor motorL(4, MOTOR34_1KHZ); // Set motor , MOTOR34_1KHZ); // Set motor Left, 1kHz PWM

 //IR receiver code
  int receiver = 29; // Signal Pin of IR receiver to Arduino Digital Pin 29

IRrecv irrecv(receiver);    // create instance of 'irrecv'
decode_results results;     // create instance of 'decode_results'


String motorSet = "";
 
int curDist = 0, pos, speedSet = 0 ;
 
void setup() {

   
   /* set IR receiver set up
   */
                       // set up de IR reciver
  Serial.begin(9600);

  
 
  
  Serial.println("IR RECEIVER BUTTON DECODE"); 
  irrecv.enableIRIn(); // Start the receiver 
  
 
 }  

  
   /*-----( Function )-----*/
 void translateIR() // takes action based on IR code received

// describing Remote IR codes 

{ switch (results.value)

  {
  case 0xFFA25D: Serial.println("POWER"); break;
  case 0xFFE21D: Serial.println("FUNC/STOP"); break;
  case 0xFF629D: Serial.println("VOL+"); break;
  case 0xFF22DD: Serial.println("TURN LEFT");    break;
  case 0xFF02FD: Serial.println("FORWARD");    break;
  case 0xFFC23D: Serial.println("TURN RIGHT");   break;
  case 0xFFE01F: Serial.println("DOWN");    break;
  case 0xFFA857: Serial.println("VOL-");    break;
  case 0xFF906F: Serial.println("UP");    break;
  case 0xFF9867: Serial.println("EQ");    break;
  case 0xFFB04F: Serial.println("ST/REPT");    break;
  case 0xFF6897: Serial.println("0");    break;
  case 0xFF30CF: Serial.println("1");    break;
  case 0xFF18E7: Serial.println("2");    break;
  case 0xFF7A85: Serial.println("3");    break;
  case 0xFF10EF: Serial.println("4");    break;
  case 0xFF38C7: Serial.println("5");    break;
  case 0xFF5AA5: Serial.println("6");    break;
  case 0xFF42BD: Serial.println("7");    break;
  case 0xFF4AB5: Serial.println("8");    break;
  case 0xFF52AD: Serial.println("9");    break;
  case 0xFFFFFFFF: Serial.println(" REPEAT");break;  

  default: 
    Serial.println("OTHER BUTTON");

  }// End Case

  delay(250);// Do not get immediate repeat

} //END translateIR



 void loop() 
 {
  
  int  checkPath(); 
  
  if (irrecv.decode(&results)) // have we received an IR signal?

  {
    switch(results.value)

    {
       case 0xFF02FD: //PAUSE button pressed
                      // set all motors forward full speed
                      Serial.println("FORWARD");
                     
                      motorSet = "FORWARD";
                      checkForward(); 
                      break;
       case 0xFFC23D: //FAST FORWARD button pressed, set turn to right
                      // set motor left forward, motor right reverse
                      Serial.println("TURN RIGHT");
                                    
                     
                      motorSet = "TURN RIGHT";  
                      turnRight();
                      break;
      case 0xFF22DD: //BACK,REVERSE button pressed set turn to left
                      //set motor left reverse, motor right forward 
                      Serial.println("TURN LEFT");
                      
                      turnLeft();
                      break;

       case 0xFF9867: //EQ button pressed
                      // set motor left reverse, motor righ reverse
                      Serial.println("BACKWARD");
                      
                      moveBackward();
                      break; 

       case 0xFFE21D: //STP button pressed
                      // stop all motor 
                      Serial.println("MOTORS STOPPED");
                    
                      moveStop();
                      break; 
                        
    }
    
      irrecv.resume(); // receive the next value
                      
    
 } 
void checkPath() {
  
  int curLeft = 0; int curRight = 0; int curFront = 0;
  curDist = 0;
  
  checkForward();

  for (pos = 135; pos >= 45; pos -= 45) {
 
    curDist = readPing();
    Serial.println(curDist);
    if (curDist < COLL_DIST) { checkCourse(); break; }
    if (curDist < TURN_DIST) { changePath(); } 
  
  }    
  
 
int readPing() {
  int cm = 0;
  while (cm < 2) {int uS = sonar.ping(); cm = uS/US_ROUNDTRIP_CM;}
  return cm;
  
}
}
 
void checkForward() { 
  if (motorSet=="FORWARD")
    {Serial.println("Forward");
      motorR.run(FORWARD); motorL.run(FORWARD); } 
}    
void changePath() {
 
  if (pos < 90) { veerLeft(); } 
  if (pos > 90) { veerRight(); }
  
}
 
void veerRight() {
  Serial.println("veerRight");
  motorR.run(BACKWARD);  motorL.run(FORWARD); 
  delay(ACT_TIME); 
  motorR.run(FORWARD);   motorL.run(FORWARD);
  motorSet = "FORWARD";
}
 
void veerLeft() {
  Serial.println("veerLeft");
  motorL.run(BACKWARD);  motorR.run(FORWARD); 
  delay(ACT_TIME); 
  motorL.run(FORWARD);   motorR.run(FORWARD);
  motorSet = "FORWARD";
}
 
void checkCourse() {
  moveBackward();
  delay(ACT_TIME);
  moveStop();
  setCourse();
}
 
void setCourse() {
  if (pos < 90) { turnRight(); } 
  if (pos > 90) { turnLeft(); }
}
 
void moveBackward() {
  Serial.println("Backward");
  motorSet = "BACKWARD";
  
  motorR.run(BACKWARD); // Turn right motor backward    
  motorL.run(BACKWARD);  // Turn left motor backward
  
  for (speedSet = 150; speedSet < MAX_SPEED; speedSet +=2)
  {
    motorL.setSpeed(speedSet);
    motorR.setSpeed(speedSet+MAX_SPEED_OFFSET);
    delay(5);
  }
}  
 
void moveForward() {
  motorSet = "FORWARD";
  checkForward();
  for (speedSet = 150; speedSet < MAX_SPEED; speedSet +=2)  {
    motorL.setSpeed(speedSet);
    motorR.setSpeed(speedSet+MAX_SPEED_OFFSET);
    delay(4);
  }
}
 
void moveStop() { motorR.run(RELEASE); motorL.run(RELEASE); }
 
void turnRight() {
  motorSet = "RIGHT";
  motorR.run(FORWARD);      // Turn right motor forward
  motorL.run(BACKWARD);     // Turn left motor backward
  delay(ACT_TIME);
  motorSet = "FORWARD";
  checkForward();
}  
 
void turnLeft() {
  motorSet = "LEFT";
  motorR.run(BACKWARD);     // Turn right motor backward
  motorL.run(FORWARD);      // Turn left motor forward
  delay(ACT_TIME);
  motorSet = "FORWARD";
  checkForward();  }

 
 }
J'essai de comprendre si je suis sur une fausse route dans ma méthode ou si l'idée de base est raisonnable,  si oui, alors  comment résoudre ce pépin.... merci de m'éclairer

Vu rapidement, il manque une accolade fermante à la fin de la loop, avant la fonction checkPath

On la retrouve entre readPing et checkForward

Bonjour,

Formater le source (avec CTRL T) permet de se rendre compte de ce genre d'erreur.

Merci de l'info, j'ai fait la fonction Cntrl-T, et j'ai un carré qui apparaît, mais je n'ai aucune idée de ce que ces symboles signifient ??

Pour me vérifier je pointe un accolade et trouve sa partie associée, mais j,avais raté celle fermant le void loop. Je croyais que les autres void devaient être inclue dans l'espace du void loop.

CTRL-T c'est sous windows, mais il y a l'équivalent sous d'autres systèmes.
Autrement tu peux aussi utiliser les menus: Outils -> Formatage automatique

Je croyais que les autres void devaient être inclue dans l'espace du void loop.

Salut

ça ne veut rien dire :).. En langage informatique les mots ont un sens précis et il faut bien les utiliser, à la fois pour se faire comprendre, mais aussi pour bien comprendre ce que l'on fait

Un "void" n'est pas un mot désignant une fonction... c'est un mot-clé qui peut être utilisé là où se place habituellement le type de retour d'une fonction. Lorsque le programmeur écrit void, cela permet d'indiquer que la fonction ne renvoie rien.

Sinon En C ou C++, le type void* est le type de pointeur générique (tout type de pointeur peut être converti en ce type et inversement.)

en programmation C ou C++, chaque fonction est déclarée ou définie séparément (qu'elle ne retourne rien ou pas) et donc non, on ne définit ou déclare pas une fonction dans une autre fonction.

Bon j'ai corrigé l'erreur , et maintenant j'ai une autre erreur de déclaration ;

maintenant c'est plus loin ;

¨readPing¨was not declared in this scope,

ce que j'ai de la difficulté à comprendre c'est que dans la version précédente qui fonctionnait je ne vois pas ce qui est changé...

[code]
#include <IRremote.h>
#include <IRremoteInt.h>

//14CORE OBSTACLE AVOINDACE ROBOT
//======================TEST CODE



#include <NewPing.h> // 
#include <AFMotor.h> // You can download the code library below

// Ultranic Pin Configuration



#define TRIG_PIN 22  //A5
#define ECHO_PIN 24  //A4

#define MAX_DISTANCE 400
#define MAX_SPEED 200
#define MAX_SPEED_OFFSET -8

#define COLL_DIST 20
#define TURN_DIST COLL_DIST+20
#define ACT_TIME 250

NewPing sonar(TRIG_PIN, ECHO_PIN, MAX_DISTANCE);

AF_DCMotor motorR(1, MOTOR12_1KHZ); // Set motor , MOTOR12_1KHZ); // Set motor Right, 1kHz PWM
AF_DCMotor motorL(4, MOTOR34_1KHZ); // Set motor , MOTOR34_1KHZ); // Set motor Left, 1kHz PWM

//IR receiver code
int receiver = 29; // Signal Pin of IR receiver to Arduino Digital Pin 29

IRrecv irrecv(receiver);    // create instance of 'irrecv'
decode_results results;     // create instance of 'decode_results'


String motorSet = "";

int curDist = 0, pos, speedSet = 0 ;

void setup() {


  /* set IR receiver set up
  */
  // set up de IR reciver
  Serial.begin(9600);




  Serial.println("IR RECEIVER BUTTON DECODE");
  irrecv.enableIRIn(); // Start the receiver


}


/*-----( Function )-----*/
void translateIR() // takes action based on IR code received

// describing Remote IR codes

{ switch (results.value)

  {
    case 0xFFA25D: Serial.println("POWER"); break;
    case 0xFFE21D: Serial.println("FUNC/STOP"); break;
    case 0xFF629D: Serial.println("VOL+"); break;
    case 0xFF22DD: Serial.println("TURN LEFT");    break;
    case 0xFF02FD: Serial.println("FORWARD");    break;
    case 0xFFC23D: Serial.println("TURN RIGHT");   break;
    case 0xFFE01F: Serial.println("DOWN");    break;
    case 0xFFA857: Serial.println("VOL-");    break;
    case 0xFF906F: Serial.println("UP");    break;
    case 0xFF9867: Serial.println("EQ");    break;
    case 0xFFB04F: Serial.println("ST/REPT");    break;
    case 0xFF6897: Serial.println("0");    break;
    case 0xFF30CF: Serial.println("1");    break;
    case 0xFF18E7: Serial.println("2");    break;
    case 0xFF7A85: Serial.println("3");    break;
    case 0xFF10EF: Serial.println("4");    break;
    case 0xFF38C7: Serial.println("5");    break;
    case 0xFF5AA5: Serial.println("6");    break;
    case 0xFF42BD: Serial.println("7");    break;
    case 0xFF4AB5: Serial.println("8");    break;
    case 0xFF52AD: Serial.println("9");    break;
    case 0xFFFFFFFF: Serial.println(" REPEAT"); break;

    default:
      Serial.println("OTHER BUTTON");

  }// End Case

  delay(250);// Do not get immediate repeat

} //END translateIR



void loop()
{

  int  checkPath();

  if (irrecv.decode(&results)) // have we received an IR signal?

  {
    switch (results.value)

    {
      case 0xFF02FD: //PAUSE button pressed
        // set all motors forward full speed
        Serial.println("FORWARD");

        motorSet = "FORWARD";
        checkForward();
        break;
      case 0xFFC23D: //FAST FORWARD button pressed, set turn to right
        // set motor left forward, motor right reverse
        Serial.println("TURN RIGHT");


        motorSet = "TURN RIGHT";
        turnRight();
        break;
      case 0xFF22DD: //BACK,REVERSE button pressed set turn to left
        //set motor left reverse, motor right forward
        Serial.println("TURN LEFT");

        turnLeft();
        break;

      case 0xFF9867: //EQ button pressed
        // set motor left reverse, motor righ reverse
        Serial.println("BACKWARD");

        moveBackward();
        break;

      case 0xFFE21D: //STP button pressed
        // stop all motor
        Serial.println("MOTORS STOPPED");

        moveStop();
        break;

    }

    irrecv.resume(); // receive the next value


  }
}
void checkPath() {

  int curLeft = 0; int curRight = 0; int curFront = 0;
  curDist = 0;

  checkForward();



  for (pos = 135; pos >= 45; pos -= 45) {

    curDist = readPing();
    Serial.println(curDist);
    if (curDist < COLL_DIST) {
      checkCourse();
      break;
    }
    if (curDist < TURN_DIST) {
      changePath();
    }

  }


  readPing() {
    int cm = 0;
    while (cm < 2) {
      int uS = sonar.ping();
      cm = uS / US_ROUNDTRIP_CM;
    }
    return cm;

  }
}

void checkForward() {
  if (motorSet == "FORWARD")
  { Serial.println("Forward");
    motorR.run(FORWARD); motorL.run(FORWARD);
  }
}
void changePath() {

  if (pos < 90) {
    veerLeft();
  }
  if (pos > 90) {
    veerRight();
  }

}

void veerRight() {
  Serial.println("veerRight");
  motorR.run(BACKWARD);  motorL.run(FORWARD);
  delay(ACT_TIME);
  motorR.run(FORWARD);   motorL.run(FORWARD);
  motorSet = "FORWARD";
}

void veerLeft() {
  Serial.println("veerLeft");
  motorL.run(BACKWARD);  motorR.run(FORWARD);
  delay(ACT_TIME);
  motorL.run(FORWARD);   motorR.run(FORWARD);
  motorSet = "FORWARD";
}

void checkCourse() {
  moveBackward();
  delay(ACT_TIME);
  moveStop();
  setCourse();
}

void setCourse() {
  if (pos < 90) {
    turnRight();
  }
  if (pos > 90) {
    turnLeft();
  }
}

void moveBackward() {
  Serial.println("Backward");
  motorSet = "BACKWARD";

  motorR.run(BACKWARD); // Turn right motor backward
  motorL.run(BACKWARD);  // Turn left motor backward

  for (speedSet = 150; speedSet < MAX_SPEED; speedSet += 2)
  {
    motorL.setSpeed(speedSet);
    motorR.setSpeed(speedSet + MAX_SPEED_OFFSET);
    delay(5);
  }
}

void moveForward() {
  motorSet = "FORWARD";
  checkForward();
  for (speedSet = 150; speedSet < MAX_SPEED; speedSet += 2)  {
    motorL.setSpeed(speedSet);
    motorR.setSpeed(speedSet + MAX_SPEED_OFFSET);
    delay(4);
  }
}

void moveStop() {
  motorR.run(RELEASE);
  motorL.run(RELEASE);
}

void turnRight() {
  motorSet = "RIGHT";
  motorR.run(FORWARD);      // Turn right motor forward
  motorL.run(BACKWARD);     // Turn left motor backward
  delay(ACT_TIME);
  motorSet = "FORWARD";
  checkForward();
}

void turnLeft() {
  motorSet = "LEFT";
  motorR.run(BACKWARD);     // Turn right motor backward
  motorL.run(FORWARD);      // Turn left motor forward
  delay(ACT_TIME);
  motorSet = "FORWARD";
  checkForward();
}


}

[/code]

Désolé mais je ne vois pas...comment cette fonction readPing() doit être déclaré.... (vraiment débutant en programmation basé sur c++

Merci de vos efforts pour m 'éclairer

Il manque l'accolade fermante de checkPath()
et il y en a une en trop tout à la fin du fichier

Et ligne 181 le type de retour :

readPing() { --> int readPing() {

Devant le nombre d'erreurs basiques de syntaxe je pense qu'il serait bon de lire un tuto d'initiation au langage C.
Nous n'arretons pas de le rappeler il n'existe pas de langage arduino, il n'y a que du C et du C++.

L' IDE ne fait que simplifier énormément l'écriture du programme en créant à partir du fichier *.ino un fichier qui répond aux normes du C++,.
Arduino ne le dit pour ne pas effrayer les débutants et l'utilisateur ne le voit pas.

A mon humble avis sans aller chercher des tutos pointus, avoir un vernis minimum sur comment écrire un fichier C ne peut que faciliter la compréhension et l'utilisation de l'IDE arduino.

Bonjour 68tjs

68tjs:
Devant le nombre d'erreurs basiques de syntaxe je pense qu'il serait bon de lire un tuto d'initiation au langage C.

Je pense qu'il s'agit d'erreurssss de copier-coller et d'un manque de souci de vérification.
Un coté touriste, dilettante.

Cordialement,
bidouilleelec

Bonjour,

Ceci étant dit, et comme je n'ai jamais eu la prétention de SAVOIR, je demande de l'aide.....

J'ai efffectivement lu et relu des tuto, mais bon probablement que je suis trop bouché ou que la solution est de reprendre au début... mais bon j'ai fait comme bien d'autres qui veulent s'amuser... et j'ai bidouiller de bouts de programme sans trop savoir tout de la programmation... est-ce qu'on peut m'aider ou je dois me tapper une formation de programmeur en C++ ?

J'ai utilisé des bouts de programme qui réfère a des fichiers sources, mais je n'arrive même pas lire ce qui est dans ces fichiers sources pour voir qu'est-ce qu'ils ont déclaré ?

Je ne demande pas de faire le boulot à ma place mais quand je demande de l'aide c'est que je suis coincé...

L'erreur m'indique erreur de compilation d ela carte ,et avant ca indique multpiple declaration.....

Ce qui me confond c'est qu'avant que je joigne les bouts (ajouter la détection avec IR remote, le reste fonctionnait...

[code]

#include <IRremote.h>

//14CORE OBSTACLE AVOINDACE ROBOT
//======================TEST CODE



#include <NewPing.h> // 
#include <AFMotor.h> // You can download the code library below

// Ultranic Pin Configuration



#define TRIG_PIN 22  //A5
#define ECHO_PIN 24  //A4

#define MAX_DISTANCE 400
#define MAX_SPEED 200
#define MAX_SPEED_OFFSET -8

#define COLL_DIST 20
#define TURN_DIST COLL_DIST+20
#define ACT_TIME 250

NewPing sonar(TRIG_PIN, ECHO_PIN, MAX_DISTANCE);

AF_DCMotor motorR(1, MOTOR12_1KHZ); // Set motor , MOTOR12_1KHZ); // Set motor Right, 1kHz PWM
AF_DCMotor motorL(4, MOTOR34_1KHZ); // Set motor , MOTOR34_1KHZ); // Set motor Left, 1kHz PWM

//IR receiver code
int receiver = 29; // Signal Pin of IR receiver to Arduino Digital Pin 29

IRrecv irrecv(receiver);    // create instance of 'irrecv'
decode_results results;     // create instance of 'decode_results'


String motorSet = "";

int curDist = 0, pos, speedSet = 0 ;

/*int readPing = 0; ///essais */

void setup() {


  /* set IR receiver set up
  */
  // set up de IR reciver
  Serial.begin(9600);




  Serial.println("IR RECEIVER BUTTON DECODE");
  irrecv.enableIRIn(); // Start the receiver


}


/*-----( Function )-----*/
void translateIR() // takes action based on IR code received

// describing Remote IR codes

{ switch (results.value)

  {
    case 0xFFA25D: Serial.println("POWER"); break;
    case 0xFFE21D: Serial.println("FUNC/STOP"); break;
    case 0xFF629D: Serial.println("VOL+"); break;
    case 0xFF22DD: Serial.println("TURN LEFT");    break;
    case 0xFF02FD: Serial.println("FORWARD");    break;
    case 0xFFC23D: Serial.println("TURN RIGHT");   break;
    case 0xFFE01F: Serial.println("DOWN");    break;
    case 0xFFA857: Serial.println("VOL-");    break;
    case 0xFF906F: Serial.println("UP");    break;
    case 0xFF9867: Serial.println("EQ");    break;
    case 0xFFB04F: Serial.println("ST/REPT");    break;
    case 0xFF6897: Serial.println("0");    break;
    case 0xFF30CF: Serial.println("1");    break;
    case 0xFF18E7: Serial.println("2");    break;
    case 0xFF7A85: Serial.println("3");    break;
    case 0xFF10EF: Serial.println("4");    break;
    case 0xFF38C7: Serial.println("5");    break;
    case 0xFF5AA5: Serial.println("6");    break;
    case 0xFF42BD: Serial.println("7");    break;
    case 0xFF4AB5: Serial.println("8");    break;
    case 0xFF52AD: Serial.println("9");    break;
    case 0xFFFFFFFF: Serial.println(" REPEAT"); break;

    default:
      Serial.println("OTHER BUTTON");

  }// End Case

  delay(250);// Do not get immediate repeat

} //END translateIR



void loop()
{

  int  checkPath();

  if (irrecv.decode(&results)) // have we received an IR signal?

  {
    switch (results.value)

    {
      case 0xFF02FD: //PAUSE button pressed
        // set all motors forward full speed
        Serial.println("FORWARD");

        motorSet = "FORWARD";
        int checkForward();
        break;
      case 0xFFC23D: //FAST FORWARD button pressed, set turn to right
        // set motor left forward, motor right reverse
        Serial.println("TURN RIGHT");


        motorSet = "TURN RIGHT";
        int turnRight();
        break;
      case 0xFF22DD: //BACK,REVERSE button pressed set turn to left
        //set motor left reverse, motor right forward
        Serial.println("TURN LEFT");

        int turnLeft();
        break;

      case 0xFF9867: //EQ button pressed
        // set motor left reverse, motor righ reverse
        Serial.println("BACKWARD");

        int moveBackward();
        break;

      case 0xFFE21D: //STP button pressed
        // stop all motor
        Serial.println("MOTORS STOPPED");

        int moveStop();
        break;

    }

    irrecv.resume(); // receive the next value


  }
}
void checkPath() {

  int curLeft = 0; int curRight = 0; int curFront = 0;
  curDist = 0;

  int checkForward();

  for (pos = 135; pos >= 45; pos -= 45) {

    int readPing();
    curDist = readPing;

    Serial.println(curDist);
    if (curDist < COLL_DIST) {
      int checkCourse();
      break;
    }
    if (curDist < TURN_DIST) {
      int changePath();
    }

  }
 int readPing();
  int cm = readPing;

  cm = 0;
  while (cm < 2) {
    int uS = sonar.ping();
    cm = uS / US_ROUNDTRIP_CM;
  }
  return cm;


}


void checkForward() {
  if (motorSet == "FORWARD")
  { Serial.println("Forward");
    motorR.run(FORWARD); motorL.run(FORWARD);
  }
}
void changePath() {

  if (pos < 90) {
    veerLeft();
  }
  if (pos > 90) {
    veerRight();
  }

}

void veerRight() {
  Serial.println("veerRight");
  motorR.run(BACKWARD);  motorL.run(FORWARD);
  delay(ACT_TIME);
  motorR.run(FORWARD);   motorL.run(FORWARD);
  motorSet = "FORWARD";
}

void veerLeft() {
  Serial.println("veerLeft");
  motorL.run(BACKWARD);  motorR.run(FORWARD);
  delay(ACT_TIME);
  motorL.run(FORWARD);   motorR.run(FORWARD);
  motorSet = "FORWARD";
}

void checkCourse() {
  moveBackward();
  delay(ACT_TIME);
  moveStop();
  setCourse();
}

void setCourse() {
  if (pos < 90) {
    turnRight();
  }
  if (pos > 90) {
    turnLeft();
  }
}

void moveBackward() {
  Serial.println("Backward");
  motorSet = "BACKWARD";

  motorR.run(BACKWARD); // Turn right motor backward
  motorL.run(BACKWARD);  // Turn left motor backward

  for (speedSet = 150; speedSet < MAX_SPEED; speedSet += 2)
  {
    motorL.setSpeed(speedSet);
    motorR.setSpeed(speedSet + MAX_SPEED_OFFSET);
    delay(5);
  }
}

void moveForward() {
  motorSet = "FORWARD";
  checkForward();
  for (speedSet = 150; speedSet < MAX_SPEED; speedSet += 2)  {
    motorL.setSpeed(speedSet);
    motorR.setSpeed(speedSet + MAX_SPEED_OFFSET);
    delay(4);
  }
}

void moveStop() {
  motorR.run(RELEASE);
  motorL.run(RELEASE);
}

void turnRight() {
  motorSet = "RIGHT";
  motorR.run(FORWARD);      // Turn right motor forward
  motorL.run(BACKWARD);     // Turn left motor backward
  delay(ACT_TIME);
  motorSet = "FORWARD";
  checkForward();
}

void turnLeft() {
  motorSet = "LEFT";
  motorR.run(BACKWARD);     // Turn right motor backward
  motorL.run(FORWARD);      // Turn left motor forward
  delay(ACT_TIME);
  motorSet = "FORWARD";
  checkForward();
}

[/code]

Je ne pense pas que tu te rendes bien compte.

Tu balances ton code, coolos, et c'est à nous de le compiler pour examiner des messages d'erreur que tu n'es même pas foutu de copier coller dans le message.
Tu nous dis simplement "ça indique multiple declaration".

Même pas un lien vers les librairies utilisées. Il faut tout deviner.

Heureusement qu'il y a des gens cool ici pour te tirer le c*l des ronces :

/tmp/arduino_build_953299/libraries/NewPing/NewPing.cpp.o (symbol from plugin): In function `intFunc2':
(.text+0x0): multiple definition of `__vector_7'
/tmp/arduino_build_953299/libraries/Arduino-IRremote/IRremote.cpp.o (symbol from plugin):(.text+0x0): first defined here
collect2: error: ld returned 1 exit status

Traduction : les librairies newping et irremote utilisent toutes deux un vecteur d'interruption __vector_7, probablement un timer.
Ce qui veut dire que ces deux librairies sont incompatibles.

Rideau, fin de la partie.

@+

Merci d'être cool et comme ca un débutant devrait trouver ca tout seul...

tres cool !!!

Je suis un débutant, si c'est interdit de poser de post quand on a besoin d'aide ... j'aimerais comprendre comment on peu apprendre .

merci quand même de m'avoir si gracieusement et aimablement tiré des ronces ...
Tout un cool !!!

la dernière erreur était compliquée, certes. ce que l'on te reproche, c'est certainement pas de demander de l'aide, c'est la manière de le faire. Comme te l'a fait remarquer hbachetti, dire juste "j'ai des erreurs" sans dire exactement lesquelles, ça veut dire que pour t'aider, on est obligé de trouver les mêmes librairies que toi (en l'occurence même de deviner lesquelles...) et de compiler ton programme pour voir exactement quelles erreurs se produisent.
C'est long, et c'est pénible.

Alors qu'avec une question qui inclurait directement les messages d'erreur que tu obtiens, tu aurais eu ta réponse tout de suite et sans problèmes...

Inversons le problème : met toi à la place des gens qui aident bénévolement sur ce forum, et qui y donnent pour la beauté du geste une part non négligeable de leur temps libre. Aurais tu pris, comme hbachetti, la peine de faire ce qu'il à fait pour te trouver la raison de ton problème ?

Et à la question devriez vous vous taper une formation à la programmation- la réponse est oui.

Ce n’est pas super compliqué, mais il faut y mettre un peu d’effort, Vous n’irez pas loin avec le copier coller si vous ne maîtrisez pas la syntaxe et sémantique. On est tous passé par là...

Et vous verrez ensuite c’est vraiment cool

Rogmorin:
Merci d'être cool et comme ca un débutant devrait trouver ca tout seul...

Non certes. Mais, par exemple, lorsque tu as une erreur de compilation dans la fenêtre qui contient les messages d'erreur tu as une barre qui te propose de recopier les messages d'erreur. Tu cliques sur le bouton et tu fais un coller dans le message que tu postes sur le forum comme ça on a toutes les infos pour répondre sans avoir à recompiler ton code de notre coté, ce qui, entre autre, implique de trouver les mêmes librairies que toi.

C'est moi qui ai parlé de tutoriels, relis ce que j'ai écris et tu verra que je n'ai pas parlé de formation de programmeur comme tu le dis en prenant la mouche mais de tutoriels d'initiation, ce n'est pas la même chose.

Ensuite tout ce qu'on t'a dit et demandé n'est pas nouveau : si tu avais lu le message #Règles du forum francophone# nous n'aurions pas été obligé de jouer aux devinettes.
Pourquoi croit-tu que ce message a été écrit ? C'est dans l'intéret des demandeurs afin que les bénévoles puissent leur fournir une réponse adaptée et rapide.

Dernier point : si tu critiques et ne respectes pas les bénévoles ils cesseront leur activité et tu fera comment ?