Problème de programme d'acquisition GPS

Bonsoir,
J’essaie d’écrire un programme permettant d’acquérir deux positions GPS et de calculer la distance les séparant.
Pour cela, j’ai tout un ensemble de calculs préparés pour projeter mes coordonnées géographiques dans un plan et en calculer la différence de position.
Le problème est que je n’arrive pas à bien utiliser la librairie TinyGPS++, permettant d’acquérir une position GPS.
Mon programme est le suivant:

#include <math.h>
#include <TinyGPS++.h>
#include <SoftwareSerial.h>

// entrées du module GPS
int RXPin = 2;
int TXPin = 3;

// fréquence des infos du GPS
int GPSBaud = 4800;

double latitudeChariot = 45.821115;
double longitudeChariot = 4.67077;
double latitudeJoueur = 45.821234;
double longitudeJoueur = 4.670678;
double excentricite = 0.082483257;
double exposantDeProjection = 0.7289686274;
double constanteDeProjection = 11745793.39;
double xPole = 600000;
double yPole = 6199695.768;
double latitudeIsometriqueChariot = 0;
double latitudeIsometriqueJoueur = 0;
double rChariot = 0;
double gChariot = 0;
double rJoueur = 0;
double gJoueur = 0;
double xChariot = 0;
double yChariot = 0;
double xJoueur = 0;
double yJoueur = 0;
double distance = 0;
double pi = 3.141593;
char entree;
boolean nouvelleentree = false;

// Create a TinyGPS++ object called "gps"
TinyGPSPlus gps;

// Create a software serial port called "gpsSerial"
SoftwareSerial gpsSerial(RXPin, TXPin);

void setup()
{
	// frequence de l'affichage des infos sur le moniteur
	Serial.begin(9600);
  
	// affichage aide utilisateur
	Serial.print(F("Entrer 1 ou 2 pour acquisition position."));
  Serial.print(F("/"));
	Serial.print(F("Entrer D pour calcul distance"));
  Serial.print(F("/"));
}

void loop()
{
	if (Serial.available() > 0) {
		entree = Serial.read();
		nouvelleentree = true;
	}
 if (nouvelleentree == true){
	if (entree == '1') {
		if (gpsSerial.available() > 0) {
			if (gps.encode(gpsSerial.read())) {
				if (gps.location.isValid())  {
					// acquisition position
					latitudeChariot = gps.location.lat();
					longitudeChariot = gps.location.lng();
					// conversion en radians
					latitudeChariot = latitudeChariot * 2 * pi / 360;
					longitudeChariot = longitudeChariot * 2 * pi / 360;
					// projection 
					latitudeIsometriqueChariot = 0.5 * log((1+sin(latitudeChariot))/(1-sin(latitudeChariot))-(excentricite/2)*log((1+excentricite*sin(latitudeChariot))/(1-excentricite*sin(latitudeChariot))));
					rChariot = constanteDeProjection * exp( -1 * exposantDeProjection * latitudeIsometriqueChariot);
					gChariot = exposantDeProjection * longitudeChariot;
					xChariot = xPole + rChariot * sin(gChariot);
					yChariot = yPole - rChariot * cos(gChariot);
					nouvelleentree = false;
					Serial.print(F("Position 1 acquise"));
				}
				else {Serial.print(F("Erreur1"));}
			}
			else {Serial.print(F("Erreur2"));}
		}		
    else {Serial.print(F("Erreur3"));} 
	}
	if (entree == '2') {
		if (gpsSerial.available() > 0) {
			if (gps.encode(gpsSerial.read())) {
				if (gps.location.isValid())  {
					// acquisition position
					latitudeJoueur = gps.location.lat();
					longitudeJoueur = gps.location.lng();
					// conversion en radians
					latitudeJoueur = latitudeJoueur * 2 * pi / 360;
					longitudeJoueur = longitudeJoueur * 2 * pi / 360;
					// projection 
					latitudeIsometriqueJoueur = 0.5 * log((1+sin(latitudeJoueur))/(1-sin(latitudeJoueur))-(excentricite/2)*log((1+excentricite*sin(latitudeJoueur))/(1-excentricite*sin(latitudeJoueur))));
					rJoueur = constanteDeProjection * exp( -1 * exposantDeProjection * latitudeIsometriqueJoueur);
					gJoueur = exposantDeProjection * longitudeJoueur;
					xJoueur = xPole + rChariot * sin(gJoueur);
					yJoueur = yPole - rChariot * cos(gJoueur);
					nouvelleentree = false;
         Serial.print(F("Position 2 acquise"));
				}
				else {Serial.print(F("Erreur"));}
			}
			else {Serial.print(F("Erreur"));}
		}		
    else {Serial.print(F("Erreur"));}
	}
	if (entree == 'D') {
		distance = sqrt(sq(xChariot - xJoueur) + sq(yChariot - yJoueur));
		Serial.print(distance);
    Serial.print(F("/"));
		nouvelleentree = false;
	}
}
}

La librairie TinyGPS++ m’a permis d’utiliser un exemple qui fonctionne parfaitement (le problème vient donc de mon programme et non du GPS Shield ni de la balise)
L’exemple :

#include <TinyGPS++.h>
#include <SoftwareSerial.h>
/*
 This example uses software serial and the TinyGPS++ library by Mikal Hart
 Based on TinyGPSPlus/DeviceExample.ino by Mikal Hart
 Modified by acavis
*/

// Choose two Arduino pins to use for software serial
// The GPS Shield uses D2 and D3 by default when in DLINE mode
int RXPin = 2;
int TXPin = 3;

// The Skytaq EM-506 GPS module included in the GPS Shield Kit
// uses 4800 baud by default
int GPSBaud = 4800;

// Create a TinyGPS++ object called "gps"
TinyGPSPlus gps;

// Create a software serial port called "gpsSerial"
SoftwareSerial gpsSerial(RXPin, TXPin);

void setup()
{
  // Start the Arduino hardware serial port at 9600 baud
  Serial.begin(9600);

  // Start the software serial port at the GPS's default baud
  gpsSerial.begin(GPSBaud);

  Serial.println(F("DeviceExample.ino"));
  Serial.println(F("A simple demonstration of TinyGPS++ with an attached GPS module"));
  Serial.print(F("Testing TinyGPS++ library v. ")); Serial.println(TinyGPSPlus::libraryVersion());
  Serial.println(F("by Mikal Hart"));
  Serial.println();
}

void loop()
{
  // This sketch displays information every time a new sentence is correctly encoded.
  while (gpsSerial.available() > 0)
    if (gps.encode(gpsSerial.read()))
      displayInfo();

  // If 5000 milliseconds pass and there are no characters coming in
  // over the software serial port, show a "No GPS detected" error
  if (millis() > 5000 && gps.charsProcessed() < 10)
  {
    Serial.println(F("No GPS detected"));
    while(true);
  }
}

void displayInfo()
{
  Serial.print(F("Location: ")); 
  if (gps.location.isValid())
  {
    Serial.print(gps.location.lat(), 6);
    Serial.print(F(","));
    Serial.print(gps.location.lng(), 6);
  }
  else
  {
    Serial.print(F("INVALID"));
  }

  Serial.print(F("  Date/Time: "));
  if (gps.date.isValid())
  {
    Serial.print(gps.date.month());
    Serial.print(F("/"));
    Serial.print(gps.date.day());
    Serial.print(F("/"));
    Serial.print(gps.date.year());
  }
  else
  {
    Serial.print(F("INVALID"));
  }

  Serial.print(F(" "));
  if (gps.time.isValid())
  {
    if (gps.time.hour() < 10) Serial.print(F("0"));
    Serial.print(gps.time.hour());
    Serial.print(F(":"));
    if (gps.time.minute() < 10) Serial.print(F("0"));
    Serial.print(gps.time.minute());
    Serial.print(F(":"));
    if (gps.time.second() < 10) Serial.print(F("0"));
    Serial.print(gps.time.second());
    Serial.print(F("."));
    if (gps.time.centisecond() < 10) Serial.print(F("0"));
    Serial.print(gps.time.centisecond());
  }
  else
  {
    Serial.print(F("INVALID"));
  }

  Serial.println();
}

J’ai résolu le problème, j’avais juste oublié d’initialiser la fréquence de lecture des infos du GPS sur la fréquence 4800, ce qui empêchait toute lecture des infos ^^