gestion spatial robot autonome erreur

bonjour
je m'appelle benjamin et je suis actuellement en T SI.
j’espère avoire posté au bonne endroit sinon merci de bien me redirigé, je fait pour un bien.
je m’excuse avance pour mon orthographe que je sait déplorable.

mon projet de robotique est un robot autonome.
autonome notamment dans ces déplacement qui luis son prés programmé,
il devras également s’arrêter obstacle imprévus tout en se rapprochant au maximum des obstacles connues. les autres fonctions viendront plus tard une chose à la fois.
pour l'instant aucun moteur aucun capteur je m’occupe de la gestion spatiale.
donc de la lecture de la trajectoire demandé, du calcule de la position théorique de mon robot en x y
et angle, et d'en déduire les moteurs concerné en fonction de tout cela.

évidemment je demande pas que l'on me mâche le travaille, je suis ici avant tout pour comprendre
mes erreurs. je ne suis pas venus les mains vident voici mon programme sur arduino évidement. avec les ligne d'erreur que je n’arrive pas à résoudre.

// INITIALISATION DES VARIABLEs 
int vmaxrec = 10;// vitesse max sur sol plat
int vmaxcirc = 10;//vitesse max circulaire sur sol plat  

long unsigned int tempreel = 0;//temps réel
long unsigned int tempprog = 0;// ?temps soustrayant les poses du aux arrets imprévus sur le parcour, permet le repére dans les etapes de parcours sans bug de saut d'étape
enum orientation {sud,est,nord,ouest,horaire,trigo,stops}; // direction d'angle ou de mouvement réctiligne demandé
float degrereel = 0; //direction de la tête du robot dans le repére x y en radiant au démarage à droite à l'est
float x = 0; // position d'origine en x  (nb: verifier le set utilisé)
float Y = 0; // position d'origine en y
int contact = 0; // varible on off coup d'envois 
int danger = 0;// détection d'un obstacle imprévus arrêt du véicule 
int margesecu = 20;// distance maximal entre le robot et un obstacle inconu (unitée à vérifier)
int margemur = 10; // distance maximal entre le robot et un obstacle de l'environnement connue (unitée à vérifier)
long unsigned int ecartp = 0; //tempreel-tempprog
long unsigned int finjeu = 100000; // temps de fin de jeux en mili seconde
long unsigned int calcutemp = 0; //variable de comparaison du tempprograme
long unsigned int a = 0; //retard du milisse avant début du programe
//SETUP
void setup() { 
// déterminé l'itinéraire près programmés 
int parcour [2][7]{{500,400,600,200,90,180,400},             // déterminé la distance ou l'angle en mm et en degrés 
                   {nord,sud,est,ouest,horaire,trigo,stops}};//déterminé le sens la direction 
}
// BOUCLE
void loop() {

// detection du coup d'envois 
//lire on off et assigner 1 à contact si ON ( à ajouté) 
  if ((contact == 1)&&(tempreel == 0)){
  a = millis;
  tempreel =millis-a;
  }
// aprés coup d'envois
if (tempreel != 0){
 //prise valeur capteur..... (à ajouté)
   // si x y proche murs alors réduire marge de sécurité sur côté concerné, variable(x,y,margemur; margesecu;non cpateur)
   // si capteurs inférieur à marge alors danger = 1 sinon danger = 0
 if ((danger== 1)||(tempreel == finjeu)){ ecartp = ecartp+tempreel-(millis-a);// commencer à calculer l'écart temporelle
 //alor tout moteur = low (à ajouté)
 }
 if (danger == 0){
 tempreel = millis-a;
 tempprog = tempreel-ecartp;

 
calcutemp =0;
 for (int i=1; calcutemp <= tempprog; i++){calcutemp = calcutemp + (parcour[1][i])/vmaxrec; //(unité à faire ?)
int b = i;}
orientation = parcour [2][b] //(unité à faire ?)
    if(orientation == sud){// pour aller à haut
  
  x = x - sin(degrereel)*(tempprog-calcutemp)*vmax; //calculés x y théorique (unité à faire ?)
  y = y - cos(degrereel)*(tempprog-calcutemp)*vmax;
      
      switch((cos(degrereel)>-sqrt(2)/2)&&(cos(degrereel)<=sqrt(2)/2)&&(sin(degrereel)>=-sqrt(2)/2)&&(sin(degrereel)<=-1)){// si sa pointe vers le bas 
      ;} //alors allumer tel moteurs
        case((cos(degrereel)>=-sqrt(2)/2)&&(cos(degrereel)<sqrt(2)/2)&&(sin(degrereel)>=-sqrt(2)/2)&&(sin(degrereel)<=-1)){// si pointe vers le haut ...
          ;}  
        case((cos(degrereel)>=-1)&&(cos(degrereel)<=-sqrt(2)/2)&&(sin(degrereel)>=-sqrt(2)/2)&&(sin(degrereel)<sqrt(2)/2)){
          ;} // si pointe vers la gauche ...
        case((cos(degrereel)>=-sqrt(2)/2)&&(cos(degrereel)<=1)&&(sin(degrereel)>-sqrt(2)/2)&&(sin(degrereel)<=sqrt(2)/2)){
          ;} // si pointe vers la droite ....
  }
    if(orientation == est){//pour aller à droite
  
  x = x + cos(degrereel)*(tempprog-calcutemp)*vmax;//calculé x y théorique (unité à faire ?)
  y = y + sin(degrereel)*(tempprog-calcutemp)*vmax;

    switch((cos(degrereel)>-sqrt(2)/2)&&(cos(degrereel)<=sqrt(2)/2)&&(sin(degrereel)>=-sqrt(2)/2)&&(sin(degrereel)<=-1)){// si sa pointe vers le bas 
      ;} //alors allumer tel moteurs
        case((cos(degrereel)>=-sqrt(2)/2)&&(cos(degrereel)<sqrt(2)/2)&&(sin(degrereel)>=-sqrt(2)/2)&&(sin(degrereel)<=-1)){// si pointe vers le haut ...
          ;}  
        case((cos(degrereel)>=-1)&&(cos(degrereel)<=-sqrt(2)/2)&&(sin(degrereel)>=-sqrt(2)/2)&&(sin(degrereel)<sqrt(2)/2)){
          ;} // si pointe vers la gauche ...
        case((cos(degrereel)>=-sqrt(2)/2)&&(cos(degrereel)<=1)&&(sin(degrereel)>-sqrt(2)/2)&&(sin(degrereel)<=sqrt(2)/2)){
          ;} // si pointe vers la droite ....
  }
    if(orientation == nord){ //pour aller en bas
  
  x = x + sin(degrereel)*(tempprog-calcutemp)*vmax; //calculé x y théorique (unité à faire ?)
  y = y + cos(degrereel)*(tempprog-calcutemp)*vmax;

      switch((cos(degrereel)>-sqrt(2)/2)&&(cos(degrereel)<=sqrt(2)/2)&&(sin(degrereel)>=-sqrt(2)/2)&&(sin(degrereel)<=-1)){// si sa pointe vers le bas 
      ;} //alors allumer tel moteur
        case((cos(degrereel)>=-sqrt(2)/2)&&(cos(degrereel)<sqrt(2)/2)&&(sin(degrereel)>=-sqrt(2)/2)&&(sin(degrereel)<=-1)){// si pointe vers le haut ...
          ;}  
        case((cos(degrereel)>=-1)&&(cos(degrereel)<=-sqrt(2)/2)&&(sin(degrereel)>=-sqrt(2)/2)&&(sin(degrereel)<sqrt(2)/2)){
          ;} // si pointe vers la gauche ...
        case((cos(degrereel)>=-sqrt(2)/2)&&(cos(degrereel)<=1)&&(sin(degrereel)>-sqrt(2)/2)&&(sin(degrereel)<=sqrt(2)/2)){
          ;} // si pointe vers la droite ....
  }
    if(orientation == ouest){ //pour aller à gauche 
  // allumer les moteurs conscernés et éteindre les autres calculés (à faire)
  x = x - cos(degrereel)*(tempprog-calcutemp)*vmax; //calculé x y théorique (unité à faire ?)
  y = y - sin(degrereel)*(tempprog-calcutemp)*vmax;

      switch((cos(degrereel)>-sqrt(2)/2)&&(cos(degrereel)<=sqrt(2)/2)&&(sin(degrereel)>=-sqrt(2)/2)&&(sin(degrereel)<=-1)){// si sa pointe vers le bas 
      ;} //alors allumer tel moteurs
        case((cos(degrereel)>=-sqrt(2)/2)&&(cos(degrereel)<sqrt(2)/2)&&(sin(degrereel)>=-sqrt(2)/2)&&(sin(degrereel)<=-1)){// si pointe vers le haut ...
          ;}  
        case((cos(degrereel)>=-1)&&(cos(degrereel)<=-sqrt(2)/2)&&(sin(degrereel)>=-sqrt(2)/2)&&(sin(degrereel)<sqrt(2)/2)){
          ;} // si pointe vers la gauche ...
        case((cos(degrereel)>=-sqrt(2)/2)&&(cos(degrereel)<=1)&&(sin(degrereel)>-sqrt(2)/2)&&(sin(degrereel)<=sqrt(2)/2)){
          ;} // si pointe vers la droite ....
  }
    if(orientation == horaire){
  // allumé les moteurs conscernés et éteindre les autres  (a faire)
  degrereel = degrereel - vmaxcirc * (tempprog - calcutemp); // calculé degrés théorique  (unité à faire ?)
  }
    if(orientation == trigo){
  // allumer les moteurs conscernés et éteindre les autres (a faire)
  degrereel = degrereel + vmaxcirc * (tempprog - calcutemp); //calculés degrés théorique (unité à faire ?)
  }
    if(orientation == stops){//éteindre tout les moteurs 
    } 
    }
 }
  }

le principal problème semble concerné une assignation de variable qui rentre en conflit avec le millis
dois'je changé l'assignation de tout mes variable concernant le temps si oui en quoi

puis une erreur de parenthèse d'ont je ne vois pas l'origine

et enfin une varible qui mes dit non déclaré alors qu'il me semble l'avoir bien fait.

merci d'avance pour votre aide.

voici le message d'erreur à peux prés en entier

programe_de_gestion_spatial_v1_robot_autonome:39: error: invalid operands of types 'long unsigned int' and 'long unsigned int (*)()' to binary 'operator-'

 if ((danger== 1)||(tempreel == finjeu)){ ecartp = ecartp+tempreel-(millis-a);// commencer à  calculer l'écart temporelle

                                                                            ^

programe_de_gestion_spatial_v1_robot_autonome:48: error: 'parcour' was not declared in this scope

 for (int i=1; calcutemp <= tempprog; i++){calcutemp = calcutemp + (parcour[1][i])/vmaxrec; //(unité à  faire ?)

                                                                    ^

programe_de_gestion_spatial_v1_robot_autonome:50: error: expected unqualified-id before '=' token

orientation = parcour [2][b] //(unité à  faire ?)

            ^

programe_de_gestion_spatial_v1_robot_autonome:119: error: expected '}' at end of input

  }

  ^

programe_de_gestion_spatial_v1_robot_autonome:119: error: expected '}' at end of input

programe_de_gestion_spatial_v1_robot_autonome:119: error: expected '}' at end of input

exit status 1
invalid operands of types 'long unsigned int' and 'long unsigned int (*)()' to binary 'operator-'

Bonjour bengloo59

bengloo59:
et enfin une varible qui mes dit non déclaré alors qu'il me semble l'avoir bien fait.

J'y vais l'un après l'autre:

La variable parcour est bien déclarée, mais dans la procédure setup() et, donc, n'est "vue" que dans cette procédure, il faut donc la déclarer "plus haut", au même niveau que int vmaxrec = 10; par ex, pour être vue de tout le monde.

Tu ne peut pas utiliser orientation ainsi
orientation = parcour [2]
orientation est une définition d'énumération,

enum orientation {sud,est,nord,ouest,horaire,trigo,stops};

tu ne peut utiliser que les membres de la liste.

Cordialement
jpbbricole

Rebonjour

Dans le code mis en ligne, il y a un problème d'accolades }!

La ligne

orientation = parcour [2]

Mise à part la mauvaise utilisation de orientation, il lui manque un ; en fin.
Si tu mets cette ligne en remarque et tu recompiles, tu t'apercevra qu la variable vmax n'est pas déclarée!

Corriges tout ça et dis nous des nouvelles.

Cordialement
jpbbricole

me revoilà merci beaucoup pour ton aide je pense avoirs corriger ce que tu ma dit en voici le résultat

// INITIALISATION DES VARIABLEs 
int vmaxrec = 10;// vitesse max sur sol plat
int vmaxcirc = 10;//vitesse max circulaire sur sol plat  

long unsigned int tempreel = 0;//temps réel
long unsigned int tempprog = 0;// ?temps soustrayant les poses du aux arrets imprévus sur le parcour, permet le repére dans les etapes de parcours sans bug de saut d'étape
enum orientation {sud,est,nord,ouest,horaire,trigo,stops}; // direction d'angle ou de mouvement réctiligne demandé
int oriente = stops;
float degrereel = 0; //direction de la tête du robot dans le repére x y en radiant au démarage à droite à l'est
float x = 0; // position d'origine en x  (nb: verifier le set utilisé)
float Y = 0; // position d'origine en y
int contact = 0; // varible on off coup d'envois 
int danger = 0;// détection d'un obstacle imprévus arrêt du véicule 
int margesecu = 20;// distance maximal entre le robot et un obstacle inconu (unitée à vérifier)
int margemur = 10; // distance maximal entre le robot et un obstacle de l'environnement connue (unitée à vérifier)
long unsigned int ecartp = 0; //tempreel-tempprog
long unsigned int finjeu = 100000; // temps de fin de jeux en mili seconde
long unsigned int calcutemp = 0; //variable de comparaison du tempprograme
long unsigned int a = 0; //retard du milisse avant début du programe
int parcour [2][7]{};
//SETUP
void setup() { 
// déterminé l'itinéraire près programmés 
parcour [2][7]{{500,400,600,200,90,180,400},             // déterminé la distance ou l'angle en mm et en degrés 
               {nord,sud,est,ouest,horaire,trigo,stops}};//déterminé le sens la direction 
                   // crer un segond tableau convertis avec des unitée plus lisible par le programe ? à faire ou modifier le calcule des données 
}
// BOUCLE
void loop() {

// detection du coup d'envois 
//lire on off et assigner 1 à contact si ON ( à ajouté) 
  if ((contact == 1)&&(tempreel == 0)){
  a = millis;
  tempreel =millis-a;
  }
// aprés coup d'envois
if (tempreel != 0){
 //prise valeur capteur..... (à ajouté)
   // si x y proche murs alors réduire marge de sécurité sur côté concerné, variable(x,y,margemur; margesecu;non cpateur)
   // si capteurs inférieur à marge alors danger = 1 sinon danger = 0
 if ((danger== 1)||(tempreel == finjeu)){ ecartp = ecartp+tempreel-(millis-a);// commencer à calculer l'écart temporelle
 //alor tout moteur = low (à ajouté)
 }
 if (danger == 0){
 tempreel = millis-a;
 tempprog = tempreel-ecartp;

 
calcutemp =0;
 for (int i=1; calcutemp <= tempprog; i++){calcutemp = calcutemp + (parcour[1][i])/vmaxrec; //(unité à faire ?)
int b = i;}
oriente = parcour [2][b]; //(unité à faire ?)
    if(oriente == sud){// pour aller à haut
  
  x = x - sin(degrereel)*(tempprog-calcutemp)*vmaxrec; //calculés x y théorique (unité à faire ?)
  y = y - cos(degrereel)*(tempprog-calcutemp)*vmaxrec;
      
      switch((cos(degrereel)>-sqrt(2)/2)&&(cos(degrereel)<=sqrt(2)/2)&&(sin(degrereel)>=-sqrt(2)/2)&&(sin(degrereel)<=-1)){// si sa pointe vers le bas 
      ;} //alors allumer tel moteurs
        case((cos(degrereel)>=-sqrt(2)/2)&&(cos(degrereel)<sqrt(2)/2)&&(sin(degrereel)>=-sqrt(2)/2)&&(sin(degrereel)<=-1)){// si pointe vers le haut ...
          ;}  
        case((cos(degrereel)>=-1)&&(cos(degrereel)<=-sqrt(2)/2)&&(sin(degrereel)>=-sqrt(2)/2)&&(sin(degrereel)<sqrt(2)/2)){
          ;} // si pointe vers la gauche ...
        case((cos(degrereel)>=-sqrt(2)/2)&&(cos(degrereel)<=1)&&(sin(degrereel)>-sqrt(2)/2)&&(sin(degrereel)<=sqrt(2)/2)){
          ;} // si pointe vers la droite ....
  }
    if(oriente == est){//pour aller à droite
  
  x = x + cos(degrereel)*(tempprog-calcutemp)*vmax;//calculé x y théorique (unité à faire ?)
  y = y + sin(degrereel)*(tempprog-calcutemp)*vmax;

    switch((cos(degrereel)>-sqrt(2)/2)&&(cos(degrereel)<=sqrt(2)/2)&&(sin(degrereel)>=-sqrt(2)/2)&&(sin(degrereel)<=-1)){// si sa pointe vers le bas 
      ;} //alors allumer tel moteurs
        case((cos(degrereel)>=-sqrt(2)/2)&&(cos(degrereel)<sqrt(2)/2)&&(sin(degrereel)>=-sqrt(2)/2)&&(sin(degrereel)<=-1)){// si pointe vers le haut ...
          ;}  
        case((cos(degrereel)>=-1)&&(cos(degrereel)<=-sqrt(2)/2)&&(sin(degrereel)>=-sqrt(2)/2)&&(sin(degrereel)<sqrt(2)/2)){
          ;} // si pointe vers la gauche ...
        case((cos(degrereel)>=-sqrt(2)/2)&&(cos(degrereel)<=1)&&(sin(degrereel)>-sqrt(2)/2)&&(sin(degrereel)<=sqrt(2)/2)){
          ;} // si pointe vers la droite ....
  }
    if(oriente == nord){ //pour aller en bas
  
  x = x + sin(degrereel)*(tempprog-calcutemp)*vmax; //calculé x y théorique (unité à faire ?)
  y = y + cos(degrereel)*(tempprog-calcutemp)*vmax;

      switch((cos(degrereel)>-sqrt(2)/2)&&(cos(degrereel)<=sqrt(2)/2)&&(sin(degrereel)>=-sqrt(2)/2)&&(sin(degrereel)<=-1)){// si sa pointe vers le bas 
      ;} //alors allumer tel moteur
        case((cos(degrereel)>=-sqrt(2)/2)&&(cos(degrereel)<sqrt(2)/2)&&(sin(degrereel)>=-sqrt(2)/2)&&(sin(degrereel)<=-1)){// si pointe vers le haut ...
          ;}  
        case((cos(degrereel)>=-1)&&(cos(degrereel)<=-sqrt(2)/2)&&(sin(degrereel)>=-sqrt(2)/2)&&(sin(degrereel)<sqrt(2)/2)){
          ;} // si pointe vers la gauche ...
        case((cos(degrereel)>=-sqrt(2)/2)&&(cos(degrereel)<=1)&&(sin(degrereel)>-sqrt(2)/2)&&(sin(degrereel)<=sqrt(2)/2)){
          ;} // si pointe vers la droite ....
  }
    if(oriente == ouest){ //pour aller à gauche 
  // allumer les moteurs conscernés et éteindre les autres calculés (à faire)
  x = x - cos(degrereel)*(tempprog-calcutemp)*vmax; //calculé x y théorique (unité à faire ?)
  y = y - sin(degrereel)*(tempprog-calcutemp)*vmax;

      switch((cos(degrereel)>-sqrt(2)/2)&&(cos(degrereel)<=sqrt(2)/2)&&(sin(degrereel)>=-sqrt(2)/2)&&(sin(degrereel)<=-1)){// si sa pointe vers le bas 
      ;} //alors allumer tel moteurs
        case((cos(degrereel)>=-sqrt(2)/2)&&(cos(degrereel)<sqrt(2)/2)&&(sin(degrereel)>=-sqrt(2)/2)&&(sin(degrereel)<=-1)){// si pointe vers le haut ...
          ;}  
        case((cos(degrereel)>=-1)&&(cos(degrereel)<=-sqrt(2)/2)&&(sin(degrereel)>=-sqrt(2)/2)&&(sin(degrereel)<sqrt(2)/2)){
          ;} // si pointe vers la gauche ...
        case((cos(degrereel)>=-sqrt(2)/2)&&(cos(degrereel)<=1)&&(sin(degrereel)>-sqrt(2)/2)&&(sin(degrereel)<=sqrt(2)/2)){
          ;} // si pointe vers la droite ....
  }
    if(oriente == horaire){
  // allumé les moteurs conscernés et éteindre les autres  (a faire)
  degrereel = degrereel - vmaxcirc * (tempprog - calcutemp); // calculé degrés théorique  (unité à faire ?)
  }
    if(oriente == trigo){
  // allumer les moteurs conscernés et éteindre les autres (a faire)
  degrereel = degrereel + vmaxcirc * (tempprog - calcutemp); //calculés degrés théorique (unité à faire ?)
  }
    if(oriente == stops){//éteindre tout les moteurs 
    } 
    }
 }
  }

il ne semble rester plus qu'une erreur nouvelle que je n'ai sue résoudre

ciblé ci dessous:

int parcour [2][7]{};
//SETUP
void setup() { // déterminé l'itinéraire près programmés 
parcour [2][7]{
              {500,400,600,200,90,180,400},             // déterminé la distance ou l'angle en mm et en degrés 
              {nord,sud,est,ouest,horaire,trigo,stops}};//déterminé le sens la direction 
                   // crer un segond tableau convertis avec des unitée plus lisible par le programe ? à faire ou modifier le calcule des données 
}

et le code erreur

programe_de_gestion_spatial_v1_robot_autonome:24: error: expected ';' before '{' token

 parcour [2][7]{{500,400,600,200,90,180,400},             // déterminé la distance ou l'angle en mm et en degrés 

               ^

programe_de_gestion_spatial_v1_robot_autonome:122: error: expected '}' at end of input

   }

   ^

exit status 1
expected ';' before '{' token

j'ai pourtant bien regardé sur internette comment l'on déclare un tableau et je ne vois pas ou est l'erreur sur le ; , il me semble qu'il ne se situe qu'a la fin du tableau

Bonsoir,

Concernant ton erreur, ta ligne ne correspond pas à une déclaration. Ta déclaration est faite plus haut. Donc c'est une assignation et dans ce cas il manque un signe '='

voila, merci je n'avais pas vus c bête comme faute sa, j'ai tout déplacé dans ma déclaration pour faire plus simple

apparemment je ne suis pas au bout de mais soucis 5 erreur similaire son aparue j'ai sue les résoudre il en reste une autre dons je ne suis pas sure de comprendre le sens .

il sgjis je crois d'un calcule impossible dut à des variable trop différentes
"int usigned long et int usigned long (*)(), j'ai fait des recherche le * est un pointeur chose que je n’arrive pas à appréhendée, je présume que le problème est du au millis une fonction assez particulière.
en quoi dois'je initialisé mais variable concerné pour être compatible avec celle ci , si ma théorie sur le problème est vrais.
sinon merci de m'expliqué se qui pose problème dans tout cela en voici les détailles.

message d'erreur:

programe_de_gestion_spatial_v1_robot_autonome:41: error: invalid operands of types 'long unsigned int' and 'long unsigned int (*)()' to binary 'operator-'

  if ((danger== 1)||(tempreel == finjeu)){ ecartp = ecartp+tempreel-(millis-a);// commencer à calculer l'écart temporelle

                                                                             ^

exit status 1
invalid operands of types 'long unsigned int' and 'long unsigned int (*)()' to binary 'operator-'

mon programme avec ses dernière modification.

// INITIALISATION DES VARIABLEs 
int vmaxrec = 10;// vitesse max sur sol plat
int vmaxcirc = 10;//vitesse max circulaire sur sol plat  

long unsigned int tempreel = 0;//temps réel
long unsigned int tempprog = 0;// ?temps soustrayant les poses du aux arrets imprévus sur le parcour, permet le repére dans les etapes de parcours sans bug de saut d'étape
enum orientation {sud,est,nord,ouest,horaire,trigo,stops}; // direction d'angle ou de mouvement réctiligne demandé
int oriente = stops;
float degrereel = 0; //direction de la tête du robot dans le repére x y en radiant au démarage à droite à l'est
float x = 0; // position d'origine en x  (nb: verifier le set utilisé)
float y = 0; // position d'origine en y
int contact = 0; // varible on off coup d'envois 
int danger = 0;// détection d'un obstacle imprévus arrêt du véicule 
int margesecu = 20;// distance maximal entre le robot et un obstacle inconu (unitée à vérifier)
int margemur = 10; // distance maximal entre le robot et un obstacle de l'environnement connue (unitée à vérifier)
long unsigned int ecartp = 0; //tempreel-tempprog
long unsigned int finjeu = 100000; // temps de fin de jeux en mili seconde
long unsigned int calcutemp = 0; //variable de comparaison du tempprograme
long unsigned int a = 0; //retard du milisse avant début du programe
int parcour [2][7]{{500,400,600,200,90,180,400},             // déterminé la distance ou l'angle en mm et en degrés 
                   {nord,sud,est,ouest,horaire,trigo,stops}};; //tableau servant d'interface pour stocker la trajectoire et les action à réaliser 
int b = 0; //simple varible de conte 
//SETUP
void setup() { // déterminé l'itinéraire près programmés 

}
// BOUCLE
void loop() {

// detection du coup d'envois 
//lire on off et assigner 1 à contact si ON ( à ajouté) 
  if ((contact == 1)&&(tempreel == 0)){
  a = millis;
  tempreel =millis-a;
  }
// aprés coup d'envois
if (tempreel != 0){
 //prise valeur capteur..... (à ajouté)
   // si x y proche murs alors réduire marge de sécurité sur côté concerné, variable(x,y,margemur; margesecu;non cpateur)
   // si capteurs inférieur à marge alors danger = 1 sinon danger = 0
 if ((danger== 1)||(tempreel == finjeu)){ ecartp = ecartp+tempreel-(millis-a);// commencer à calculer l'écart temporelle
 //alor tout moteur = low (à ajouté)
 }
 if (danger == 0){
 tempreel = millis-a;
 tempprog = tempreel-ecartp;

 
calcutemp =0;
 for (int i=1; calcutemp <= tempprog; i++){calcutemp = calcutemp + (parcour[1][i])/vmaxrec; //(unité à faire ?)
 b = i;}
oriente = parcour [2][b]; //(unité à faire ?)
    if(oriente == sud){// pour aller à haut
  
  x = x - sin(degrereel)*(tempprog-calcutemp)*vmaxrec; //calculés x y théorique (unité à faire ?)
  y = y - cos(degrereel)*(tempprog-calcutemp)*vmaxrec;
      
      if((cos(degrereel)>-sqrt(2)/2)&&(cos(degrereel)<=sqrt(2)/2)&&(sin(degrereel)>=-sqrt(2)/2)&&(sin(degrereel)<=-1)){// si sa pointe vers le bas 
      ;} //alors allumer tel moteurs
        if ((cos(degrereel)>=-sqrt(2)/2)&&(cos(degrereel)<sqrt(2)/2)&&(sin(degrereel)>=-sqrt(2)/2)&&(sin(degrereel)<=-1)){// si pointe vers le haut ...
          ;}  
        if ((cos(degrereel)>=-1)&&(cos(degrereel)<=-sqrt(2)/2)&&(sin(degrereel)>=-sqrt(2)/2)&&(sin(degrereel)<sqrt(2)/2)){
          ;} // si pointe vers la gauche ...
        if ((cos(degrereel)>=-sqrt(2)/2)&&(cos(degrereel)<=1)&&(sin(degrereel)>-sqrt(2)/2)&&(sin(degrereel)<=sqrt(2)/2)){
          ;} // si pointe vers la droite ....
  }
    if(oriente == est){//pour aller à droite
  
  x = x + cos(degrereel)*(tempprog-calcutemp)*vmaxrec;//calculé x y théorique (unité à faire ?)
  y = y + sin(degrereel)*(tempprog-calcutemp)*vmaxrec;

    if((cos(degrereel)>-sqrt(2)/2)&&(cos(degrereel)<=sqrt(2)/2)&&(sin(degrereel)>=-sqrt(2)/2)&&(sin(degrereel)<=-1)){// si sa pointe vers le bas 
      ;} //alors allumer tel moteurs
        if ((cos(degrereel)>=-sqrt(2)/2)&&(cos(degrereel)<sqrt(2)/2)&&(sin(degrereel)>=-sqrt(2)/2)&&(sin(degrereel)<=-1)){// si pointe vers le haut ...
          ;}  
        if ((cos(degrereel)>=-1)&&(cos(degrereel)<=-sqrt(2)/2)&&(sin(degrereel)>=-sqrt(2)/2)&&(sin(degrereel)<sqrt(2)/2)){
          ;} // si pointe vers la gauche ...
        if ((cos(degrereel)>=-sqrt(2)/2)&&(cos(degrereel)<=1)&&(sin(degrereel)>-sqrt(2)/2)&&(sin(degrereel)<=sqrt(2)/2)){
          ;} // si pointe vers la droite ....
  }
    if(oriente == nord){ //pour aller en bas
  
  x = x + sin(degrereel)*(tempprog-calcutemp)*vmaxrec; //calculé x y théorique (unité à faire ?)
  y = y + cos(degrereel)*(tempprog-calcutemp)*vmaxrec;

      if((cos(degrereel)>-sqrt(2)/2)&&(cos(degrereel)<=sqrt(2)/2)&&(sin(degrereel)>=-sqrt(2)/2)&&(sin(degrereel)<=-1)){// si sa pointe vers le bas 
      ;} //alors allumer tel moteur
        if ((cos(degrereel)>=-sqrt(2)/2)&&(cos(degrereel)<sqrt(2)/2)&&(sin(degrereel)>=-sqrt(2)/2)&&(sin(degrereel)<=-1)){// si pointe vers le haut ...
          ;}  
        if ((cos(degrereel)>=-1)&&(cos(degrereel)<=-sqrt(2)/2)&&(sin(degrereel)>=-sqrt(2)/2)&&(sin(degrereel)<sqrt(2)/2)){
          ;} // si pointe vers la gauche ...
        if ((cos(degrereel)>=-sqrt(2)/2)&&(cos(degrereel)<=1)&&(sin(degrereel)>-sqrt(2)/2)&&(sin(degrereel)<=sqrt(2)/2)){
          ;} // si pointe vers la droite ....
  }
    if(oriente == ouest){ //pour aller à gauche 
  // allumer les moteurs conscernés et éteindre les autres calculés (à faire)
  x = x - cos(degrereel)*(tempprog-calcutemp)*vmaxrec; //calculé x y théorique (unité à faire ?)
  y = y - sin(degrereel)*(tempprog-calcutemp)*vmaxrec;

      if((cos(degrereel)>-sqrt(2)/2)&&(cos(degrereel)<=sqrt(2)/2)&&(sin(degrereel)>=-sqrt(2)/2)&&(sin(degrereel)<=-1)){// si sa pointe vers le bas 
      ;} //alors allumer tel moteurs
        if ((cos(degrereel)>=-sqrt(2)/2)&&(cos(degrereel)<sqrt(2)/2)&&(sin(degrereel)>=-sqrt(2)/2)&&(sin(degrereel)<=-1)){// si pointe vers le haut ...
          ;}  
        if ((cos(degrereel)>=-1)&&(cos(degrereel)<=-sqrt(2)/2)&&(sin(degrereel)>=-sqrt(2)/2)&&(sin(degrereel)<sqrt(2)/2)){
          ;} // si pointe vers la gauche ...
        if ((cos(degrereel)>=-sqrt(2)/2)&&(cos(degrereel)<=1)&&(sin(degrereel)>-sqrt(2)/2)&&(sin(degrereel)<=sqrt(2)/2)){
          ;} // si pointe vers la droite ....
  }
    if(oriente == horaire){
  // allumé les moteurs conscernés et éteindre les autres  (à faire)
  degrereel = degrereel - vmaxcirc * (tempprog - calcutemp); // calculé degrés théorique  (unité à faire ?)
  }
    if(oriente == trigo){
  // allumer les moteurs conscernés et éteindre les autres (à faire)
  degrereel = degrereel + vmaxcirc * (tempprog - calcutemp); //calculés degrés théorique (unité à faire ?)
  }
    if(oriente == stops){//éteindre tout les moteurs 
    } 
    }
 }
  }

Millis() est une fonction et non une variable. Tu dois utiliser les parenthèses comme toute fonction.

Édit: Long (4 bytes) et int (2 bytes) sont deux types de variables différents.
long unsigned int => long unsigned
Même si c'est équivalent, c'est un peu lourd à la lecture.

merci beaucoup enfin plus de message d'erreur
pour ce qui concerne la gestion spatial il ne me reste a modifier quelque incohérence d'unité mais ce n'est que des math sa devrais allez
merci pour vos éclaircissement.
il ne me reste plus qu'à intégrer les moteur et les capteur mais sa c une autre histoire

cordialement
bengloo

De rien, bonne continuation :wink: