Datasheet

In this sketch, we can either use interrupts and call GPS.read() within a once-a-millisecond timer
(this is the same timer that runs the millis() command) or we check GPS.read() in the main loop
constantly. Then in the main loop we can ask if a new chunk of data has been received by calling
GPS.newNMEAreceived(), if this returns true then we can ask the library to parse that data with
GPS.parse(GPS.lastNMEA()).
We do have to keep querying and parsing in the main loop - its not possible to do this in an interrupt
because then we'd be dropping GPS data by accident.
Once data is parsed, we can just ask for data from the library like GPS.day, GPS.month and
GPS.year for the current date. GPS.fix will be 1 if there is a fix, 0 if there is none. If we have a fix
then we can ask for GPS.latitude, GPS.longitude, GPS.speed (in knots, not mph or k/hr!),
GPS.angle, GPS.altitude (in meters) and GPS.satellites (number of satellites)
This should make it much easier to have location-based projects. We suggest keeping the update
rate at 1Hz and request that the GPS only output RMC and GGA as the parser does not keep track
of other data anyways.
© Adafruit Industries https://learn.adafruit.com/adafruit-ultimate-gps-logger-shield Page 18 of 34