Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "U8glib.h"
- #include <TinyGPS++.h>
- #include <SoftwareSerial.h>
- U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI
- TinyGPSPlus gps;
- static const int RXPin = 3, TXPin = 2;
- static const uint32_t GPSBaud = 9600;
- SoftwareSerial ss(RXPin, TXPin);
- unsigned long last = 0UL;
- const char* newTime;
- void parseGPS(void) {
- while (ss.available() > 0)
- gps.encode(ss.read());
- if (gps.location.isUpdated())
- {
- Serial.print(F("LOCATION Fix Age="));
- Serial.print(gps.location.age());
- Serial.print(F("ms Raw Lat="));
- Serial.print(gps.location.rawLat().negative ? "-" : "+");
- Serial.print(gps.location.rawLat().deg);
- Serial.print("[+");
- Serial.print(gps.location.rawLat().billionths);
- Serial.print(F(" billionths], Raw Long="));
- Serial.print(gps.location.rawLng().negative ? "-" : "+");
- Serial.print(gps.location.rawLng().deg);
- Serial.print("[+");
- Serial.print(gps.location.rawLng().billionths);
- Serial.print(F(" billionths], Lat="));
- Serial.print(gps.location.lat(), 6);
- Serial.print(F(" Long="));
- Serial.println(gps.location.lng(), 6);
- }
- else if (gps.date.isUpdated())
- {
- Serial.print(F("DATE Fix Age="));
- Serial.print(gps.date.age());
- Serial.print(F("ms Raw="));
- Serial.print(gps.date.value());
- Serial.print(F(" Year="));
- Serial.print(gps.date.year());
- Serial.print(F(" Month="));
- Serial.print(gps.date.month());
- Serial.print(F(" Day="));
- Serial.println(gps.date.day());
- }
- else if (gps.time.isUpdated())
- {
- Serial.print(F("TIME Fix Age="));
- Serial.print(gps.time.age());
- Serial.print(F("ms Raw="));
- Serial.print(gps.time.value());
- Serial.print(F(" Hour="));
- Serial.print(gps.time.hour());
- Serial.print(F(" Minute="));
- Serial.print(gps.time.minute());
- Serial.print(F(" Second="));
- Serial.print(gps.time.second());
- Serial.print(F(" Hundredths="));
- Serial.println(gps.time.centisecond());
- }
- else if (gps.speed.isUpdated())
- {
- Serial.print(F("SPEED Fix Age="));
- Serial.print(gps.speed.age());
- Serial.print(F("ms Raw="));
- Serial.print(gps.speed.value());
- Serial.print(F(" Knots="));
- Serial.print(gps.speed.knots());
- Serial.print(F(" MPH="));
- Serial.print(gps.speed.mph());
- Serial.print(F(" m/s="));
- Serial.print(gps.speed.mps());
- Serial.print(F(" km/h="));
- Serial.println(gps.speed.kmph());
- }
- else if (gps.course.isUpdated())
- {
- Serial.print(F("COURSE Fix Age="));
- Serial.print(gps.course.age());
- Serial.print(F("ms Raw="));
- Serial.print(gps.course.value());
- Serial.print(F(" Deg="));
- Serial.println(gps.course.deg());
- }
- else if (gps.altitude.isUpdated())
- {
- Serial.print(F("ALTITUDE Fix Age="));
- Serial.print(gps.altitude.age());
- Serial.print(F("ms Raw="));
- Serial.print(gps.altitude.value());
- Serial.print(F(" Meters="));
- Serial.print(gps.altitude.meters());
- Serial.print(F(" Miles="));
- Serial.print(gps.altitude.miles());
- Serial.print(F(" KM="));
- Serial.print(gps.altitude.kilometers());
- Serial.print(F(" Feet="));
- Serial.println(gps.altitude.feet());
- }
- else if (gps.satellites.isUpdated())
- {
- Serial.print(F("SATELLITES Fix Age="));
- Serial.print(gps.satellites.age());
- Serial.print(F("ms Value="));
- Serial.println(gps.satellites.value());
- }
- else if (gps.hdop.isUpdated())
- {
- Serial.print(F("HDOP Fix Age="));
- Serial.print(gps.hdop.age());
- Serial.print(F("ms Value="));
- Serial.println(gps.hdop.value());
- }
- else if (millis() - last > 5000)
- {
- Serial.println();
- if (gps.location.isValid())
- {
- static const double LONDON_LAT = 51.508131, LONDON_LON = -0.128002;
- double distanceToLondon =
- TinyGPSPlus::distanceBetween(
- gps.location.lat(),
- gps.location.lng(),
- LONDON_LAT,
- LONDON_LON);
- double courseToLondon =
- TinyGPSPlus::courseTo(
- gps.location.lat(),
- gps.location.lng(),
- LONDON_LAT,
- LONDON_LON);
- Serial.print(F("LONDON Distance="));
- Serial.print(distanceToLondon/1000, 6);
- Serial.print(F(" km Course-to="));
- Serial.print(courseToLondon, 6);
- Serial.print(F(" degrees ["));
- Serial.print(TinyGPSPlus::cardinal(courseToLondon));
- Serial.println(F("]"));
- }
- Serial.print(F("DIAGS Chars="));
- Serial.print(gps.charsProcessed());
- Serial.print(F(" Sentences-with-Fix="));
- Serial.print(gps.sentencesWithFix());
- Serial.print(F(" Failed-checksum="));
- Serial.print(gps.failedChecksum());
- Serial.print(F(" Passed-checksum="));
- Serial.println(gps.passedChecksum());
- if (gps.charsProcessed() < 10)
- Serial.println(F("WARNING: No GPS data. Check wiring."));
- last = millis();
- }
- }
- void processGPS(void) {
- // Dispatch incoming characters
- while (ss.available() > 0)
- gps.encode(ss.read());
- if (gps.time.isUpdated()){
- u8g.setFont(u8g_font_6x10);
- newTime = (const char*) gps.time.value();
- //Serial.println("newtime : ---------------------------");
- //Serial.println(gps.time.value());
- }
- }
- // BEGIN DRAW
- void draw(void) {
- drawText();
- drawGPS();
- }
- void drawText(void) {
- u8g.setFont(u8g_font_6x10);
- u8g.drawStr(8,27, " knock, knock, neo.");
- }
- void drawGPS(void) {
- //u8g.setFont(u8g_font_gdr25r);
- //u8g.drawStr(0, 30, "U");
- //u8g.setFont(u8g_font_gdr30n);
- //u8g.drawStr90(23,10,"8");
- //u8g.drawStr90(64,10,latitude);
- /*
- Serial.print(F("TIME Fix Age="));
- Serial.print(gps.time.age());
- Serial.print(F("ms Raw="));
- Serial.print(gps.time.value());
- Serial.print(F(" Hour="));
- Serial.print(gps.time.hour());
- Serial.print(F(" Minute="));
- Serial.print(gps.time.minute());
- Serial.print(F(" Second="));
- Serial.print(gps.time.second());
- Serial.print(F(" Hundredths="));
- Serial.println(gps.time.centisecond());
- */
- u8g.drawStr(7,15, newTime);
- }
- void pictureLoop(void) {
- // picture loop
- u8g.firstPage();
- do {
- draw();
- } while( u8g.nextPage() );
- }
- // END DRAW
- void setup() {
- Serial.begin(115200);
- ss.begin(GPSBaud);
- Serial.println(F("KitchenSink.ino"));
- Serial.println(" F L I G H T - S I M - D E B U G ");
- }
- void loop() {
- // put your main code here, to run repeatedly:
- //parseGPS(); // parse gps
- processGPS(); // get the fucking time
- pictureLoop(); // draw display
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement