Problème de téléversement

Salut à tous,

Je n'arrive pas à téléverser ce code :

//On placele modulesérie sur les RX TX2 (16 et 17), 
//le 18 sera en grd  et 19 en 5V pour alim du max232


# define ALIM 19
# define GROUND 18






String inString [100];
String lecture [20];
String i [20];
int p;
int a;
String  affiche [20];

//
void commande(String);
int poids ();
String acquerir ();





void setup() {
// Alim du RS 232
pinMode (GROUND,OUTPUT);
pinMode (ALIM, OUTPUT);

digitalWrite(ALIM, HIGH);
digitalWrite(GROUND, LOW);

//////////////////////////////////////////////


  
Serial.begin(9600);






Serial.println ("Parti !!!");


delay (1000);
Serial.println ("Initialisation compteur...");

Serial2.begin(9600);
Serial.println ("Port série démarré");
commande ("ECHO");
String i = acquerir();
if (i== "ECHO")
   {Serial.print ("Echo OK !!!!");} 
   else
   {Serial.print ("Problème echo !!!!!");  }

delay (1000);
//commande ("TARE");
//Serial.println ("Tare envoyée");
//delay (1000);
commande ("AFFICH2");

}

///////////////////////////////////////////////////////////////////

void loop(){
for (int a=0;a<15;a++);{
int p = poids();

Serial.print("Le poids est ");
Serial.println (p);

Serial.print("Le poids +111 est ");
Serial.println (p+111);

delay (3000);
}//Fin test poids

//Tests affichages
Serial.println ("Tests d'affichage hello world");
commande ("!HELLO");
delay (2000);
commande ("!WORLD");
delay (5000);  
  


}

// Fin void loop

/////////////////////////////////////////////////////////////////////////



//Commandes en général
void commande (String i) 
   {   Serial2.flush();

     
     if  (i=="ZERO") 
   {Serial2.print ("ZERO\r");
   }
   if  (i=="TARE") 
   {Serial2.print ("ZERO\r");
   }
   if (i=="READ");
   {Serial2.print ("READ\r");
   }
   if (i=="ECHO");
   {Serial2.print ("ECHO\r");
   }
   
      if (i=="AFFICH2");
   {Serial2.print ("DINT07D0\r");
   }
   if (i[0]=='!') {
     String affiche ="DISP00";
     affiche.concat (i.substring (1,3));
     affiche.concat ('/r');
     Serial2.print (affiche);
     
     Serial.print ("Essai d'affichage : ");
     Serial.println (i.substring (1));       
   


   }
   }



//Commande de poids.........................
int poids () {
  commande ("READ");  
    
  int pds = 0;
  String lecture=acquerir();
  
  for (int i=0; i<15;i++){
   
    if (isDigit(lecture[i]))
     {
     pds=pds*10+int(lecture[i]);
     }
  }
return pds;
}




//Commande d'acquisition d'une ligne sur commande
String acquerir() {
  String inString= "";
  boolean c=true;

  while (c) {
    int inChar = Serial2.read();
    
    
    switch (inChar) {
       
      case -1 : {break;}// si rien dans le buffer
      
      case 13 :{
        c=false;// Pour sortir de la boucle !
        break;}
       
      case 10 :{
       break;}
       
      default :{
       inString += (char)inChar; 
       break;
      } 
 
  }// fin switch
 }//fin while
return inString;
} //fin fonction acquérir

La vérif est Ok, mais le téléversement bloque à moitié et puis plus rien...
Avez-vous des idées pour me dépanner ?

Au fait...

C'est une arduino mega classique, utilisée avec l'IDE arduino (par un débutant)...
J'ai cherché dans les troubleshooting, ya une histoire de processus Logitech en conflit avec tout ça... Et chez moi pas de processus de chez Logitech (voir http://arduino.cc/en/guide/troubleshooting#toc6

J'ai essayé d'autres uploads (exemples de l'IDE) et RAS, ça fonctionne avec d'autres programmes que celui ci-dessus !

Merci de votre aide !

Bonjour,

Enlève de ton code chaque occurrence de trois points d'exclamation à la suite ("!!!") ou remplace les par autre chose, puis reviens nous dire si c'est mieux ou pas...

J'ai eu un problème de téléchargement dans des conditions identiques : compilation OK et plantage au téléversement. La raison en était que, bien que cela se compile, je faisais des allocations mémoire hors dimension des tableaux.

J'aurais normalement dû avoir un plantage à l'éxécution, ben non, c'était au téléversement ???

Je ne dis pas que c'est ton problème, mais tu peux toujours vérifier.

Cordialement.

Pierre

Rolala 2 jours de galère à cause de points d'exclamations en trop... RAGEANT !
Trompé par mon enthousiasme... :zipper_mouth_face:

Ca fonctionne nickel maintenant ya plus qu'à débugger... Et il y a de quoi faire !
Merci haifger pour la solution !!! et merci Pierre, je me souviendrai de ton conseil si ca se reproduit !

@+

Hé hé, oui, je me doute bien que ça doit être énervant. Pour info il s'agit d'un bug du bootloader de la Mega. Donc tu as le choix entre mettre ce bootloader à jour (si tu possède ce qu'il faut) ou te contenter de vivre avec maintenant que tu le connais. La deuxième solution étant bien évidemment la plus simple :slight_smile:

haifger:
Hé hé, oui, je me doute bien que ça doit être énervant. Pour info il s'agit d'un bug du bootloader de la Mega.

Il ont pas mis à jour le bootloader dans les séries R3 pour éviter ce problème ?

Je serait curieux de savoir quelle révision de la mega tu possèdes farmer64.