Advertisement
Guest User

Adafruit GPS to OLED

a guest
Mar 20th, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.31 KB | None | 0 0
  1. /*
  2.  *  Adafruit GPS deg-Min with OLED and Ultimate GPS Wing (ESP32)
  3.  *  @author [Zachary Hunter]  
  4. */
  5. #include <Adafruit_GPS.h>
  6. #include <SPI.h>
  7. #include <Wire.h>
  8. #include <Adafruit_GFX.h>
  9. #include <Adafruit_SSD1306.h>
  10. #include <math.h>;
  11. #define GPSSerial Serial2
  12.  
  13. Adafruit_SSD1306 display = Adafruit_SSD1306(128, 32, &Wire);
  14.  
  15. Adafruit_GPS GPS(&GPSSerial);
  16. #define GPSECHO false
  17.  
  18. double convertCoords(double in_coords) {
  19.   double f = in_coords;
  20.   int firstDigits = ((int)f) / 100;
  21.   double nextDigits = f - (double)(firstDigits * 100);
  22.   double finalDigits = (double)(firstDigits + nextDigits / 60.0);
  23.   return finalDigits;
  24. }
  25.  
  26. uint32_t timer = millis();
  27.  
  28. void setup() {
  29.   display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  30.   display.clearDisplay();
  31.   display.display();
  32.  
  33.   Serial.begin(115200);
  34.   Serial.println("Adafruit GPS library basic test!");
  35.  
  36.   GPS.begin(9600);
  37.  
  38.   GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA);
  39.  
  40.   GPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ); // 1 Hz update rate
  41.  
  42.   GPS.sendCommand(PGCMD_ANTENNA);
  43.  
  44.   delay(1000);
  45.  
  46.   // Ask for firmware version
  47.   GPSSerial.println(PMTK_Q_RELEASE);
  48.  
  49.   display.setTextSize(1);
  50.   display.setTextColor(WHITE);
  51. }
  52.  
  53. void loop() {
  54.  
  55.   char c = GPS.read();
  56.  
  57.   if (GPSECHO)
  58.     if (c) Serial.print(c);
  59.   if (GPS.newNMEAreceived()) {
  60.     Serial.println(GPS.lastNMEA());
  61.     if (!GPS.parse(GPS.lastNMEA()))
  62.       return;
  63.   }
  64.   if (timer > millis()) timer = millis();
  65.   if (millis() - timer > 2000) {
  66.     timer = millis(); // reset the timer
  67.     display.clearDisplay();
  68.     display.setCursor(0, 0);
  69.     Serial.print("\nTime: ");
  70.     Serial.print((GPS.hour, DEC) + 2);
  71.     Serial.print(':');
  72.     Serial.print(GPS.minute, DEC);
  73.     Serial.print(':');
  74.     Serial.print(GPS.seconds, DEC);
  75.     Serial.print('.');
  76.     Serial.println(GPS.milliseconds);
  77.     Serial.print("Date: ");
  78.     Serial.print(GPS.day, DEC);
  79.     Serial.print('/');
  80.     Serial.print(GPS.month, DEC);
  81.     Serial.print("/20");
  82.     Serial.println(GPS.year, DEC);
  83.     Serial.print("Fix: ");
  84.     Serial.print((int)GPS.fix);
  85.     Serial.print(" quality: ");
  86.     Serial.println((int)GPS.fixquality);
  87.  
  88.     display.print("Fix: ");
  89.     display.print((int)GPS.fix);
  90.     display.print(" / Quality: ");
  91.     display.println((int)GPS.fixquality);
  92.  
  93.     display.print((GPS.hour, DEC) + 2);
  94.     display.print(':');
  95.     display.print(GPS.minute, DEC);
  96.     display.print(':');
  97.     display.print(GPS.seconds, DEC);
  98.     display.print('.');
  99.     display.println(GPS.milliseconds);
  100.     if (GPS.fix) {
  101.       Serial.print("Location: ");
  102.       Serial.print(convertCoords(GPS.latitude));
  103.       Serial.print(GPS.lat);
  104.       Serial.print(", ");
  105.       Serial.print(convertCoords(GPS.longitude));
  106.       Serial.println(GPS.lon);
  107.  
  108.       display.print(convertCoords(GPS.latitude));
  109.       display.print(GPS.lat);
  110.       display.print(", -");
  111.       display.print(convertCoords(GPS.longitude));
  112.       display.print(GPS.lon);
  113.  
  114.       Serial.print("Speed (knots): ");
  115.       Serial.println(GPS.speed);
  116.       Serial.print("Angle: ");
  117.       Serial.println(GPS.angle);
  118.       Serial.print("Altitude: "); Serial.println(GPS.altitude);
  119.       Serial.print("Satellites: "); Serial.println((int)GPS.satellites);
  120.       display.print("\nSatellites: "); display.println((int)GPS.satellites);
  121.     }
  122.     display.display();
  123.   }
  124. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement