appel de plusieurs programmes

voici mon programme GPS. toutes les commandes d'affichage sur le terminal seront supprimés sur la version finale. elles ne servent que pour les tests.

#include <NewSoftSerial.h> 
#include "Wire.h"
#include <TinyGPS.h> 
#include <Deuligne.h>
Deuligne lcd;
int escape=0;


int  x; //variable servant au calcul de conversion
int  y;
int d;
int m;
int D;
int M;
const int brocheTX=2; // Constante pour la broche 2
const int brocheRX=3; // Constante pour la broche 3
String chaineReceptionGPS=""; // chaine réception
NewSoftSerial mySoftSerial(brocheRX, brocheTX); 
TinyGPS gps; // déclare un objet GPS

void setup()   { // debut de la fonction setup()
Serial.begin(115200); 
mySoftSerial.begin(4800); 

lcd.init();

// désactivation envoi automatique des trames GPS par le module GPS
envoiGPS("PSRF103,00,00,00,01"); 
envoiGPS("PSRF103,01,00,00,01"); 
envoiGPS("PSRF103,02,00,00,01"); 
envoiGPS("PSRF103,03,00,00,01"); 
envoiGPS("PSRF103,04,00,00,01"); 
envoiGPS("PSRF103,05,00,00,01"); 


mySoftSerial.flush(); // vide le buffer série logiciel

} // fin de la fonction setup()

void loop(){ // debut de la fonction loop()


    mySoftSerial.flush(); 

     
      Serial.print("Requete trame GGA :");
       envoiGPS("PSRF103,00,01,00,01"); 
      Serial.print("Reponse du GPS : "); // message
      while(!mySoftSerial.available()); // attend une réponse du GPS - stop si pas de réponse
     receptionGPS(); // analyse réponse GPS

     
      Serial.print("Requete trame RMC :");
      envoiGPS("PSRF103,04,01,00,01"); // Demande de trame RMC avec controle activé
     Serial.print("Reponse du GPS : "); 
     while(!mySoftSerial.available()); 
     receptionGPS(); 

             Serial.println();
       
        gestionGPS(gps);         // appel la fonction de gestion du GPS

    
    Serial.println();
       Serial.println();
       
       
       
       
}






//while(1); // stop loop



// fin de la fonction loop() - le programme recommence au début de la fonction loop sans fin
// ********************************************************************************


// ////////////////////////// FONCTIONS DE GESTION DES INTERRUPTIONS ////////////////////


// ////////////////////////// AUTRES FONCTIONS DU PROGRAMME ////////////////////

//----- fonction analyse réponse GPS ----

void receptionGPS() {

   while(mySoftSerial.available())  {  

      int c = mySoftSerial.read();    
      chaineReceptionGPS=chaineReceptionGPS+char(c);
      Serial.print(char(c)); // affiche le caractère reçu

     boolean test=gps.encode(c);
    delay(1); // entre 2 réceptions... laisse le temps au caractère suivant d'arriver...

      if(test==true) {     

        Serial.println();
        Serial.print("Une chaine valide (GGA ou RMC) a ete recue par la librairie TinyGPS :");

        Serial.println(chaineReceptionGPS); // affiche la chaine reçue
        chaineReceptionGPS=""; // RAZ chaine de réception


      } // fin nouvelle trame valide
   } // fin while SoftSerial

} //-- fin fonction receptionGPS

//----- fonction envoi instruction GPS ---
void envoiGPS ( String chaineEnvoi) {


  
  String checksumChaine=String (checkSum(chaineEnvoi),HEX);

  Serial.println();
  
  
  chaineEnvoi="$"+chaineEnvoi+"*"+checksumChaine+char(0xD)+char(0xA);

  Serial.print("Commande envoyee au GPS : ");
  Serial.print(chaineEnvoi); // debug - affiche commande GPS
  //Serial.println();

  mySoftSerial.flush(); // vide le buffer série logiciel avant requete GPS
  mySoftSerial.print(chaineEnvoi); // envoi la chaine sur le port série logiciel

} // fin fonction envoi GPS




int checkSum (String chaineTest) { 
  int test=0; // initialise variable locale

 for (int i=0; i<chaineTest.length(); i++) { 
  char c=chaineTest.charAt(i); // extrait le caractère de la chaine

  // Serial.print(c); // debug - affiche caractère


          // si c'est le premier passage
          if (test == 0) {
                // on initialise la variable test avec la valeur du caractère
                test = byte(c);
                }
          else {
                // sinon on fait un XOR entre la variable test et la valeur du caractère
                test = test ^ byte(c);
                }


} // fin for i

return test; // renvoie la valeur de controle


} // fin fonction Checksum


//---- fonction de Gestion du GPS ----

void gestionGPS(TinyGPS &gps) { // la fonction reçoit le pointeur de l'objet GPS

  float latitude, longitude; // variable locale de latitude et longitude
  x = latitude ;
  y = longitude ; 
  gps.f_get_position(&latitude, &longitude); // la fonction reçoit les pointeurs des variables
  //et met les valeurs dans les variables

  Serial.print("Lat/Long: ");
  Serial.print(latitude,5); // avec 5 décimales
  Serial.print(", ");
  Serial.println(longitude,5); // avec 5 décimales


  int annee; // variable locale
  byte mois, jour, heure, minute, seconde, centiemes;// variables locales

  gps.crack_datetime(&annee,&mois,&jour,&heure,&minute,&seconde,&centiemes); // la fonction reçoit les pointeurs des variables
  //et met les valeurs dans les variables

  Serial.print("Date: "); Serial.print(mois, DEC); Serial.print("/");
  Serial.print(jour, DEC); Serial.print("/"); Serial.print(annee);
  Serial.print("  Time: "); Serial.print(heure, DEC); Serial.print(":");
  Serial.print(minute, DEC); Serial.print(":"); Serial.print(seconde, DEC);
  Serial.print("."); Serial.println(centiemes, DEC);

  // les fonctions suivantes renvoient directement la valeur float
  Serial.print("Altitude (metres): "); Serial.println(gps.f_altitude());  
  Serial.print("Course (degres): "); Serial.println(gps.f_course()); // ?
  Serial.print("Speed(kmph): "); Serial.println(gps.f_speed_kmph());
  Serial.println();

  //--- statistiques décodage GPS ---
  unsigned long chars; // variable locale
  unsigned short sentences, failed_checksum;
  gps.stats(&chars, &sentences, &failed_checksum); // la fonction reçoit les pointeurs des variables
  //et met les valeurs dans les variables

  Serial.print("Erreurs Checksums: ");Serial.print(failed_checksum); // message indiquant si erreur de validité des chaines reçues
  Serial.println(); Serial.println();

  //---- génération de l'adresse utilisable dans Googlemap
 // Serial.println("Adresse pour google map : ");
 // Serial.print("http://maps.google.com/maps?q=");
  Serial.print(latitude,5);
  Serial.print(",+");
  Serial.println(longitude,5);

                
         
          lcd.clear ();
                    x=latitude;//mise en x de la valeur de latitude
                    y=longitude;// mise en y de la valeur longitude
          d=(((latitude-x)*1000*60)/1000);// formule de conversion en degres sexagesime 
          m=((((latitude-x)*1000*60)/1000)-d)*60;// conversion pour latitude
          lcd.print ( x  ); lcd.print ( "d"); lcd.print (d); lcd.print ( "m");lcd.print (m); // affichage des coordonnées
          D=(((longitude-y)*1000*60)/1000); // conversion en degres sexagesime
          M=((((longitude-y)*1000*60)/1000)-D)*60;
          lcd.setCursor ( 0,1);
          lcd.print ( y  ); lcd.print ("d");lcd.print (D); lcd.print ( "m");lcd.print (M);;// affichage du resultat
    
        lcd.setCursor ( 9,1);
        lcd.print(gps.f_altitude());  // affichage de l'altitude.
        lcd.setCursor ( 14 , 1);
        lcd.print ("m");