Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Adafruit GPS deg-Min with OLED and Ultimate GPS Wing (ESP32)
- * @author [Zachary Hunter]
- */
- #include <Adafruit_GPS.h>
- #include <SPI.h>
- #include <Wire.h>
- #include <Adafruit_GFX.h>
- #include <Adafruit_SSD1306.h>
- #include <math.h>;
- double convertCoords(double in_coords) {
- double f = in_coords;
- int firstDigits = ((int)f) / 100;
- double nextDigits = f - (double)(firstDigits * 100);
- double finalDigits = (double)(firstDigits + nextDigits / 60.0);
- return finalDigits;
- }
- Adafruit_SSD1306 display = Adafruit_SSD1306(128, 32, &Wire);
- #define GPSSerial Serial2
- Adafruit_GPS GPS(&GPSSerial);
- #define GPSECHO false
- uint32_t timer = millis();
- void setup() {
- display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
- display.clearDisplay();
- display.display();
- Serial.begin(115200);
- Serial.println("Adafruit GPS library basic test!");
- GPS.begin(9600);
- GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA);
- GPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ); // 1 Hz update rate
- GPS.sendCommand(PGCMD_ANTENNA);
- delay(1000);
- // Ask for firmware version
- GPSSerial.println(PMTK_Q_RELEASE);
- display.setTextSize(1);
- display.setTextColor(WHITE);
- }
- void loop() {
- char c = GPS.read();
- if (GPSECHO)
- if (c) Serial.print(c);
- if (GPS.newNMEAreceived()) {
- Serial.println(GPS.lastNMEA());
- if (!GPS.parse(GPS.lastNMEA()))
- return;
- }
- if (timer > millis()) timer = millis();
- if (millis() - timer > 2000) {
- timer = millis(); // reset the timer
- display.clearDisplay();
- display.setCursor(0, 0);
- Serial.print("\nTime: ");
- Serial.print((GPS.hour, DEC) + 2);
- Serial.print(':');
- Serial.print(GPS.minute, DEC);
- Serial.print(':');
- Serial.print(GPS.seconds, DEC);
- Serial.print('.');
- Serial.println(GPS.milliseconds);
- Serial.print("Date: ");
- Serial.print(GPS.day, DEC);
- Serial.print('/');
- Serial.print(GPS.month, DEC);
- Serial.print("/20");
- Serial.println(GPS.year, DEC);
- Serial.print("Fix: ");
- Serial.print((int)GPS.fix);
- Serial.print(" quality: ");
- Serial.println((int)GPS.fixquality);
- display.print("Fix: ");
- display.print((int)GPS.fix);
- display.print(" / Quality: ");
- display.println((int)GPS.fixquality);
- display.print((GPS.hour, DEC) + 2);
- display.print(':');
- display.print(GPS.minute, DEC);
- display.print(':');
- display.print(GPS.seconds, DEC);
- display.print('.');
- display.println(GPS.milliseconds);
- if (GPS.fix) {
- Serial.print("Location: ");
- Serial.print(convertCoords(GPS.latitude));
- Serial.print(GPS.lat);
- Serial.print(", ");
- Serial.print(convertCoords(GPS.longitude));
- Serial.println(GPS.lon);
- display.print(convertCoords(GPS.latitude));
- display.print(GPS.lat);
- display.print(", -");
- display.print(convertCoords(GPS.longitude));
- display.print(GPS.lon);
- Serial.print("Speed (knots): ");
- Serial.println(GPS.speed);
- Serial.print("Angle: ");
- Serial.println(GPS.angle);
- Serial.print("Altitude: "); Serial.println(GPS.altitude);
- Serial.print("Satellites: "); Serial.println((int)GPS.satellites);
- display.print("\nSatellites: "); display.println((int)GPS.satellites);
- }
- display.display();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement