Advertisement
Guest User

Adafruit GPS to OLED

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