adafruit / Adafruit_GPS

An interrupt-based GPS Arduino library for no-parsing-required use
Other
475 stars 318 forks source link

Parsing issue - latitude, others? #126

Closed caternuson closed 4 years ago

caternuson commented 4 years ago

Related: https://forums.adafruit.com/viewtopic.php?f=31&t=167318

Example sketch below parses a provided sentence, using the example data from here: http://aprs.gids.nl/nmea/#gga GGA latitude = "4124.8963" should parse out to 41 degrees and 24.8963 minutes, or 41.4149 degrees.

A spurious 1 is showing up, throwing off the computed value

#include <Adafruit_GPS.h>

// Constructor for no communications, just data storage
Adafruit_GPS GPS;

// checksum calculator: https://nmeachecksum.eqth.net/
#define SENTENCE "$GPGGA,170834,4124.8963,N,08151.6838,W,1,05,1.5,280.2,M,-34.0,M,,*75"

void setup() {
  Serial.begin(9600);
  while (!Serial);
  Serial.println("GPS Parser Test");

  Serial.println("-------------------------------");

  if (GPS.parse(SENTENCE)) {
    Serial.print(GPS.latitude); Serial.print(" -> "); Serial.println(GPS.latitudeDegrees);
    Serial.print(GPS.longitude); Serial.print(" -> ") ; Serial.println(GPS.longitudeDegrees);
    // add any other parameters of interest
  } else {
    Serial.println("Parser Error.");
  }

  Serial.println("==============================");

}

void loop() {
  if (GPS.parse(SENTENCE)) {
    Serial.print(GPS.latitude); Serial.print(" -> "); Serial.println(GPS.latitudeDegrees);
    Serial.print(GPS.longitude); Serial.print(" -> ") ; Serial.println(GPS.longitudeDegrees);
    // add any other parameters of interest
  } else {
    Serial.println("Parser Error.");
  }
  delay(1000);
}

Running on UNO gives:

GPS Parser Test
-------------------------------
41241.89 -> -16.80
8151.68 -> -81.86
==============================
41241.89 -> -16.80
8151.68 -> -81.86
41241.89 -> -16.80
8151.68 -> -81.86
drak7 commented 4 years ago

This was fixed in 1.5.1, I'm not seeing any issues testing on an Uno. Is this still happening in the latest version?

caternuson commented 4 years ago

Thanks. That seems to be it. I was still on 1.5.0. My bad. :facepalm:

GPS Parser Test
-------------------------------
4124.90 -> 41.41
8151.68 -> -81.86
==============================
4124.90 -> 41.41
8151.68 -> -81.86
4124.90 -> 41.41
8151.68 -> -81.86
couillonnade commented 1 year ago

The problem is there in 1.7.2

Time: 18:05:03.000 Date: 27/4/2023 Fix: 1 quality: 2 Location: 4526.0615N, 7349.4267W Speed (knots): 0.09 Angle: 200.86 Altitude: 159.90 Satellites: 7 Antenna status: 0 $GPGGA,180504.000,4526.0614,N,07349.4269,W,2,07,1.13,159.9,M,-32.2,M,,5D $GPRMC,180504.000,A,4526.0614,N,07349.4269,W,0.19,200.86,270423,,,D73 $GPGGA,180505.000,4526.0614,N,07349.4270,W,2,07,1.13,159.9,M,-32.2,M,,54 $GPRMC,180505.000,A,4526.0614,N,07349.4270,W,0.00,200.86,270423,,,D72

couillonnade commented 1 year ago

OK, it was not clear in the sample but reading at the source code, there are two fields latitude, and latitudeDegrees