Buenas.
Llevo un par de días trabajando con Arduino Mega y el GPS Logger Shield de Sparkfun. He intentado seguir la guía del GPS (no paso la url porque no sé si puedo ponerla aquí o no), y no consigo que me funcione.
Debido a que uso Arduino Mega, tengo que conectar de forma manual los pines GPS-TX y GPS-RX a los pines A8 y A9 del arduino (en realidad pueden ser otros dos, pero yo he elegido estos). Cuando conecto los pines 5V, 3.3V y GND a la placa arduino, así como los pines A8 y A9, al ejecutar el código sólo obtengo 0. Es decir, obtengo Latitud 0, Longitud 0, etc. Creo que el problema está en el código, así que si alguien tiene alguna idea de que puede estar sucediendo agradecería si me lo explicara.
El código que utilizo es el siguiente:
#include <TinyGPS++.h>
TinyGPSPlus tinyGPS;
#include <SoftwareSerial.h>
#define ARDUINO_GPS_RX A9 // GPS TX, Arduino RX pin
#define ARDUINO_GPS_TX A8 // GPS RX, Arduino TX pin
SoftwareSerial ssGPS(ARDUINO_GPS_TX, ARDUINO_GPS_RX); // Create a SoftwareSerial
#define gpsPort ssGPS
#define SerialMonitor Serial
#define GPS_BAUD 9600
void setup()
{
SerialMonitor.begin(9600);
gpsPort.begin(GPS_BAUD);
}
void loop()
{
printGPSInfo();
delay(1000);
}
void printGPSInfo()
{
SerialMonitor.print("Lat: "); SerialMonitor.println(tinyGPS.location.lat(), 6);
SerialMonitor.print("Long: "); SerialMonitor.println(tinyGPS.location.lng(), 6);
SerialMonitor.print("Alt: "); SerialMonitor.println(tinyGPS.altitude.feet());
SerialMonitor.print("Course: "); SerialMonitor.println(tinyGPS.course.deg());
SerialMonitor.print("Speed: "); SerialMonitor.println(tinyGPS.speed.mph());
SerialMonitor.print("Date: "); printDate();
SerialMonitor.print("Time: "); printTime();
SerialMonitor.print("Sats: "); SerialMonitor.println(tinyGPS.satellites.value());
SerialMonitor.println();
}
// printDate() formats the date into dd/mm/yy.
void printDate()
{
SerialMonitor.print(tinyGPS.date.day());
SerialMonitor.print("/");
SerialMonitor.print(tinyGPS.date.month());
SerialMonitor.print("/");
SerialMonitor.println(tinyGPS.date.year());
}
// printTime() formats the time into "hh:mm:ss", and prints leading 0's
// where they're called for.
void printTime()
{
SerialMonitor.print(tinyGPS.time.hour());
SerialMonitor.print(":");
if (tinyGPS.time.minute() < 10) SerialMonitor.print('0');
SerialMonitor.print(tinyGPS.time.minute());
SerialMonitor.print(":");
if (tinyGPS.time.second() < 10) SerialMonitor.print('0');
SerialMonitor.println(tinyGPS.time.second());
}