Adafruit GPS library sample with Xadow GPS and Xadow Oled
Dependencies: MBed_Adafruit-GPS-Library SSD1308_128x64_I2C USBDevice mbed
Fork of AVC_gps by
main.cpp
- Committer:
- whatnick
- Date:
- 2014-11-21
- Revision:
- 1:2387ce3e58c8
- Parent:
- 0:59cfe30c337c
File content as of revision 1:2387ce3e58c8:
#include "mbed.h" #include "pinmap.h" #include "SSD1308.h" #include "MBed_Adafruit_GPS.h" Serial gps(P0_19,P0_18); #define DEBUG #ifdef DEBUG #include "USBSerial.h" // To use USB virtual serial, a driver is needed, check http://mbed.org/handbook/USBSerial #define LOG(args...) pc.printf(args) USBSerial pc; #else #define LOG(args...) #endif #define HARD_SPI 1 #define I2C_FREQ 100000 I2C i2c(I2C_SDA, I2C_SCL); //Use Xadow OLED for display SSD1308 oled = SSD1308(i2c, SSD1308_SA0); //GPS Data int main() { Adafruit_GPS myGPS(&gps); char c; //when read via Adafruit_GPS::read(), the class returns single character stored here Timer refresh_Timer; //sets up a timer for use in loop; how often do we print GPS info? const int refresh_Time = 1000; //refresh time in ms myGPS.begin(9600); oled.clearDisplay(); oled.writeString(0,0,"GPS Test"); oled.writeString(1,0,"GPS Start"); wait(1); refresh_Timer.start(); //starts the clock on the timer while (true) { c = myGPS.read(); //queries the GPS if (c) { pc.printf("%c", c); //this line will echo the GPS data if not paused } //check if we recieved a new message from GPS, if so, attempt to parse it, if ( myGPS.newNMEAreceived() ) { if ( !myGPS.parse(myGPS.lastNMEA()) ) { continue; } } //check if enough time has passed to warrant printing GPS info to screen //note if refresh_Time is too low or pc.baud is too low, GPS data may be lost during printing if (refresh_Timer.read_ms() >= refresh_Time) { refresh_Timer.reset(); pc.printf("Time: %d:%d:%d.%u\n", myGPS.hour, myGPS.minute, myGPS.seconds, myGPS.milliseconds); pc.printf("Date: %d/%d/20%d\n", myGPS.day, myGPS.month, myGPS.year); pc.printf("Fix: %d\n", (int) myGPS.fix); pc.printf("Quality: %d\n", (int) myGPS.fixquality); if (myGPS.fix) { pc.printf("Location: %5.2f%c, %5.2f%c\n", myGPS.latitude, myGPS.lat, myGPS.longitude, myGPS.lon); pc.printf("Speed: %5.2f knots\n", myGPS.speed); pc.printf("Angle: %5.2f\n", myGPS.angle); pc.printf("Altitude: %5.2f\n", myGPS.altitude); pc.printf("Satellites: %d\n", myGPS.satellites); } if (myGPS.fix) { char oled_str[20]; oled.writeString(1,0,"GPS Lock "); sprintf(oled_str,"LAT:%f",myGPS.latitude); oled.writeString(2,0,oled_str); sprintf(oled_str,"LON:%f",myGPS.longitude); oled.writeString(3,0,oled_str); sprintf(oled_str,"ALT:%f",myGPS.altitude); oled.writeString(4,0,oled_str); } else { oled.writeString(1,0,"GPS Lost "); } } } }