Bonjour,
J'ai une carte arduino et deux GPS neo6m, je veux lire leur sur la même carte pour commencer mais ca bloque déjà a ce niveau. Le montage ne contient que la carte arduino uno et les deux GPS. Le premier sur les broches 2,3 et le deuxième sur les broches 4,5. Lorsque le montage est fait, ils fonctionnent très bien tous les deux si je les teste individuellement. Mais lorsque je veux lire les deux en meme temps il n'y en a qu'un seul qui s'affiche, le deuxième. D’ailleurs pourquoi le deuxième ? Voici le code
#include <TinyGPS++.h>
#include <SoftwareSerial.h>
static const int RXPin1 = 2, TXPin1 = 3;
static const int RXPin2 = 4, TXPin2 = 5;
static const uint32_t GPSBaud = 9600;
double lat1,lon1,lat2,lon2;
TinyGPSPlus gps1;
TinyGPSPlus gps2;
SoftwareSerial Gps1(RXPin1, TXPin1);
SoftwareSerial Gps2(RXPin2, TXPin2);
void setup()
{
Serial.begin(9600);
// Gps1.begin(9600);
Gps2.begin(9600);
}
void loop()
{
while (Gps1.available() > 0)
if (gps1.encode(Gps1.read()))
displayInfo1();
while (Gps2.available() > 0)
if (gps2.encode(Gps2.read()))
displayInfo1();
}
void displayInfo1()
{
// Serial.print(F("Location: "));
if (gps1.location.isValid())
{
lat1 = gps1.location.lat() ;
lon1 = gps1.location.lng() ;
Serial.print("GPS1:(");
Serial.print(lat1,8);
Serial.print(F(","));
Serial.print(lon1,8);
Serial.print(")");
Serial.print(",");
delay(100);
}
else if (gps2.location.isValid())
{
lat2 = gps2.location.lat() ;
lon2 = gps2.location.lng() ;
Serial.print("GPS2:(");
Serial.print(lat2,8);
Serial.print(F(","));
Serial.print(lon2,8);
Serial.print(")");
Serial.print(",");
delay(100);
}
else
{
Serial.print(F("INVALID"));
}
delay(1000);
}
Il fonctionne lorsque l'une des deux déclarations Gps1,2.begin(9600) est commente mais pas les deux en meme temps. Le problème semble donc venir de la. J'ai essaye avec des Baudrate différents, 9600 et 19200, ca ne fonctionne pas non plus.
Auriez vous une idée ?
Merci