diff --git a/Adafruit_GPS.cpp b/Adafruit_GPS.cpp index 2cade6e..80e5f57 100755 --- a/Adafruit_GPS.cpp +++ b/Adafruit_GPS.cpp @@ -28,8 +28,8 @@ */ /**************************************************************************/ -#if defined(__AVR__) && defined(USE_SW_SERIAL) - // Only include software serial on AVR platforms (i.e. not on Due). +#if (defined(__AVR__) || defined(ESP8266)) && defined(USE_SW_SERIAL) + // Only include software serial on AVR platforms and ESP8266 (i.e. not on Due). #include #endif #include @@ -295,7 +295,7 @@ char Adafruit_GPS::read(void) { if (paused) return c; -#if defined(__AVR__) && defined(USE_SW_SERIAL) +#if (defined(__AVR__) || defined(ESP8266)) && defined(USE_SW_SERIAL) if(gpsSwSerial) { if(!gpsSwSerial->available()) return c; c = gpsSwSerial->read(); @@ -339,16 +339,12 @@ char Adafruit_GPS::read(void) { /**************************************************************************/ /*! - @brief Constructor when using SoftwareSerial or NewSoftSerial - @param ser Pointer to SoftwareSerial device or NewSoftSerial device + @brief Constructor when using SoftwareSerial + @param ser Pointer to SoftwareSerial device */ /**************************************************************************/ -#if defined(__AVR__) && defined(USE_SW_SERIAL) - #if ARDUINO >= 100 +#if (defined(__AVR__) || defined(ESP8266)) && defined(USE_SW_SERIAL) Adafruit_GPS::Adafruit_GPS(SoftwareSerial *ser) - #else -Adafruit_GPS::Adafruit_GPS(NewSoftSerial *ser) - #endif { common_init(); // Set everything to common state, then... gpsSwSerial = ser; // ...override gpsSwSerial with value passed. @@ -372,7 +368,7 @@ Adafruit_GPS::Adafruit_GPS(HardwareSerial *ser) { */ /**************************************************************************/ void Adafruit_GPS::common_init(void) { -#if defined(__AVR__) && defined(USE_SW_SERIAL) +#if (defined(__AVR__) || defined(ESP8266)) && defined(USE_SW_SERIAL) gpsSwSerial = NULL; // Set both to NULL, then override correct #endif gpsHwSerial = NULL; // port pointer in corresponding constructor @@ -399,7 +395,7 @@ void Adafruit_GPS::common_init(void) { /**************************************************************************/ void Adafruit_GPS::begin(uint32_t baud) { -#if defined(__AVR__) && defined(USE_SW_SERIAL) +#if (defined(__AVR__) || defined(ESP8266)) && defined(USE_SW_SERIAL) if(gpsSwSerial) gpsSwSerial->begin(baud); else @@ -416,7 +412,7 @@ void Adafruit_GPS::begin(uint32_t baud) */ /**************************************************************************/ void Adafruit_GPS::sendCommand(const char *str) { -#if defined(__AVR__) && defined(USE_SW_SERIAL) +#if (defined(__AVR__) || defined(ESP8266)) && defined(USE_SW_SERIAL) if(gpsSwSerial) gpsSwSerial->println(str); else diff --git a/Adafruit_GPS.h b/Adafruit_GPS.h index 174b25d..fa9a5cd 100755 --- a/Adafruit_GPS.h +++ b/Adafruit_GPS.h @@ -28,12 +28,9 @@ #define USE_SW_SERIAL ///< comment this out if you don't want to include software serial in the library -#if defined(__AVR__) && defined(USE_SW_SERIAL) - #if ARDUINO >= 100 - #include - #else - #include - #endif +#include "Arduino.h" +#if (defined(__AVR__) || defined(ESP8266)) && defined(USE_SW_SERIAL) + #include #endif /**************************************************************************/ @@ -89,15 +86,6 @@ #define MAXWAITSENTENCE 10 ///< how long to wait when we're looking for a response /**************************************************************************/ -#if ARDUINO >= 100 - #include "Arduino.h" -#if defined (__AVR__) && !defined(__AVR_ATmega32U4__) - #include "SoftwareSerial.h" -#endif -#else - #include "WProgram.h" - #include "NewSoftSerial.h" -#endif /**************************************************************************/ /*! @@ -107,12 +95,8 @@ class Adafruit_GPS { public: void begin(uint32_t baud); -#if defined(__AVR__) && defined(USE_SW_SERIAL) - #if ARDUINO >= 100 - Adafruit_GPS(SoftwareSerial *ser); // Constructor when using SoftwareSerial - #else - Adafruit_GPS(NewSoftSerial *ser); // Constructor when using NewSoftSerial - #endif +#if (defined(__AVR__) || defined(ESP8266)) && defined(USE_SW_SERIAL) + Adafruit_GPS(SoftwareSerial *ser); // Constructor when using SoftwareSerial #endif Adafruit_GPS(HardwareSerial *ser); // Constructor when using HardwareSerial @@ -184,12 +168,8 @@ class Adafruit_GPS { boolean paused; uint8_t parseResponse(char *response); -#if defined(__AVR__) && defined(USE_SW_SERIAL) - #if ARDUINO >= 100 - SoftwareSerial *gpsSwSerial; - #else - NewSoftSerial *gpsSwSerial; - #endif +#if (defined(__AVR__) || defined(ESP8266)) && defined(USE_SW_SERIAL) + SoftwareSerial *gpsSwSerial; #endif HardwareSerial *gpsHwSerial; }; diff --git a/examples/GPS_HardwareSerial_EchoTest/.esp8266.test.skip b/examples/GPS_HardwareSerial_EchoTest/.esp8266.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/GPS_HardwareSerial_EchoTest/.uno.test.skip b/examples/GPS_HardwareSerial_EchoTest/.uno.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/GPS_HardwareSerial_EchoTest/GPS_HardwareSerial_EchoTest.ino b/examples/GPS_HardwareSerial_EchoTest/GPS_HardwareSerial_EchoTest.ino index 3208144..b71be79 100644 --- a/examples/GPS_HardwareSerial_EchoTest/GPS_HardwareSerial_EchoTest.ino +++ b/examples/GPS_HardwareSerial_EchoTest/GPS_HardwareSerial_EchoTest.ino @@ -10,7 +10,7 @@ // but also works with the shield, breakout // ------> https://www.adafruit.com/products/1272 // ------> https://www.adafruit.com/products/746 -// +// // Pick one up today at the Adafruit electronics shop // and help support open source hardware & software! -ada @@ -30,7 +30,7 @@ void setup() { GPSSerial.begin(9600); } - + void loop() { if (Serial.available()) { char c = Serial.read(); diff --git a/examples/GPS_HardwareSerial_LOCUS_DumpBasic/.esp8266.test.skip b/examples/GPS_HardwareSerial_LOCUS_DumpBasic/.esp8266.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/GPS_HardwareSerial_LOCUS_DumpBasic/.uno.test.skip b/examples/GPS_HardwareSerial_LOCUS_DumpBasic/.uno.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/GPS_HardwareSerial_LOCUS_DumpBasic/GPS_HardwareSerial_LOCUS_DumpBasic.ino b/examples/GPS_HardwareSerial_LOCUS_DumpBasic/GPS_HardwareSerial_LOCUS_DumpBasic.ino index 9e1dec8..a7d72a2 100644 --- a/examples/GPS_HardwareSerial_LOCUS_DumpBasic/GPS_HardwareSerial_LOCUS_DumpBasic.ino +++ b/examples/GPS_HardwareSerial_LOCUS_DumpBasic/GPS_HardwareSerial_LOCUS_DumpBasic.ino @@ -11,7 +11,7 @@ // but also works with the shield, breakout // ------> https://www.adafruit.com/products/1272 // ------> https://www.adafruit.com/products/746 -// +// // Pick one up today at the Adafruit electronics shop // and help support open source hardware & software! -ada @@ -28,19 +28,19 @@ Adafruit_GPS GPS(&GPSSerial); // Set to 'true' if you want to debug and listen to the raw GPS sentences #define GPSECHO true -void setup() +void setup() { //while (!Serial); // uncomment to have the sketch wait until Serial is ready - + // connect at 115200 so we can read the GPS fast enough and echo without dropping chars // also spit it out Serial.begin(115200); delay(1000); - Serial.println("Adafruit GPS logging data dump!”); - + Serial.println("Adafruit GPS logging data dump!"); + // 9600 NMEA is the default baud rate for MTK - some use 4800 GPS.begin(9600); - + GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_OFF); while (GPSSerial.available()) diff --git a/examples/GPS_HardwareSerial_LOCUS_Erase/.esp8266.test.skip b/examples/GPS_HardwareSerial_LOCUS_Erase/.esp8266.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/GPS_HardwareSerial_LOCUS_Erase/.uno.test.skip b/examples/GPS_HardwareSerial_LOCUS_Erase/.uno.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/GPS_HardwareSerial_LOCUS_Erase/GPS_HardwareSerial_LOCUS_Erase.ino b/examples/GPS_HardwareSerial_LOCUS_Erase/GPS_HardwareSerial_LOCUS_Erase.ino index 156ebbd..50e77bf 100644 --- a/examples/GPS_HardwareSerial_LOCUS_Erase/GPS_HardwareSerial_LOCUS_Erase.ino +++ b/examples/GPS_HardwareSerial_LOCUS_Erase/GPS_HardwareSerial_LOCUS_Erase.ino @@ -5,7 +5,7 @@ // Tested and works great with the Adafruit Ultimate GPS module // using MTK33x9 chipset // ------> http://www.adafruit.com/products/746 -// Pick one up today at the Adafruit electronics shop +// Pick one up today at the Adafruit electronics shop // and help support open source hardware & software! -ada //This code is intended for use with Arduino Leonardo and other ATmega32U4-based Arduinos @@ -35,10 +35,10 @@ Adafruit_GPS GPS(&GPSSerial); #define GPSECHO true -void setup() -{ +void setup() +{ while (!Serial) ; //wait for serial port on Leonardo - + // connect at 115200 so we can read the GPS fast enuf and // also spit it out Serial.begin(115200); @@ -46,7 +46,7 @@ void setup() // 9600 NMEA is the default baud rate for MTK GPS.begin(9600); - + GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_OFF); Serial.println("This code will ERASE the data log stored in the FLASH - Permanently!"); @@ -66,4 +66,3 @@ void loop() // run over and over again Serial.write(c); } } - diff --git a/examples/GPS_HardwareSerial_LOCUS_Start/.esp8266.test.skip b/examples/GPS_HardwareSerial_LOCUS_Start/.esp8266.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/GPS_HardwareSerial_LOCUS_Start/.uno.test.skip b/examples/GPS_HardwareSerial_LOCUS_Start/.uno.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/GPS_HardwareSerial_LOCUS_Start/GPS_HardwareSerial_LOCUS_Start.ino b/examples/GPS_HardwareSerial_LOCUS_Start/GPS_HardwareSerial_LOCUS_Start.ino index 14c306d..ca7ace0 100644 --- a/examples/GPS_HardwareSerial_LOCUS_Start/GPS_HardwareSerial_LOCUS_Start.ino +++ b/examples/GPS_HardwareSerial_LOCUS_Start/GPS_HardwareSerial_LOCUS_Start.ino @@ -11,7 +11,7 @@ // but also works with the shield, breakout // ------> https://www.adafruit.com/products/1272 // ------> https://www.adafruit.com/products/746 -// +// // Pick one up today at the Adafruit electronics shop // and help support open source hardware & software! -ada @@ -28,19 +28,19 @@ Adafruit_GPS GPS(&GPSSerial); // Set to 'true' if you want to debug and listen to the raw GPS sentences #define GPSECHO true -void setup() +void setup() { //while (!Serial); // uncomment to have the sketch wait until Serial is ready - + // connect at 115200 so we can read the GPS fast enough and echo without dropping chars // also spit it out Serial.begin(115200); delay(1000); Serial.println("Adafruit GPS logging start test!"); - + // 9600 NMEA is the default baud rate for MTK - some use 4800 GPS.begin(9600); - + // You can adjust which sentences to have the module emit, below // Default is RMC + GGA GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA); @@ -50,7 +50,7 @@ void setup() GPS.sendCommand(PGCMD_ANTENNA); // Ask for firmware version GPS.sendCommand(PMTK_Q_RELEASE); - + Serial.print("\nSTARTING LOGGING...."); if (GPS.LOCUS_StartLogger()) Serial.println(" STARTED!"); @@ -69,6 +69,3 @@ void loop() // run over and over again } /******************************************************************/ - - - diff --git a/examples/GPS_HardwareSerial_LOCUS_Status/.esp8266.test.skip b/examples/GPS_HardwareSerial_LOCUS_Status/.esp8266.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/GPS_HardwareSerial_LOCUS_Status/.uno.test.skip b/examples/GPS_HardwareSerial_LOCUS_Status/.uno.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/GPS_HardwareSerial_LOCUS_Status/GPS_HardwareSerial_LOCUS_Status.ino b/examples/GPS_HardwareSerial_LOCUS_Status/GPS_HardwareSerial_LOCUS_Status.ino index 68bfc29..49d5f53 100644 --- a/examples/GPS_HardwareSerial_LOCUS_Status/GPS_HardwareSerial_LOCUS_Status.ino +++ b/examples/GPS_HardwareSerial_LOCUS_Status/GPS_HardwareSerial_LOCUS_Status.ino @@ -11,7 +11,7 @@ // but also works with the shield, breakout // ------> https://www.adafruit.com/products/1272 // ------> https://www.adafruit.com/products/746 -// +// // Pick one up today at the Adafruit electronics shop // and help support open source hardware & software! -ada @@ -28,19 +28,19 @@ Adafruit_GPS GPS(&GPSSerial); // Set to 'true' if you want to debug and listen to the raw GPS sentences #define GPSECHO true -void setup() +void setup() { //while (!Serial); // uncomment to have the sketch wait until Serial is ready - + // connect at 115200 so we can read the GPS fast enough and echo without dropping chars // also spit it out Serial.begin(115200); delay(1000); Serial.println("Adafruit GPS logging start test!"); - + // 9600 NMEA is the default baud rate for MTK - some use 4800 GPS.begin(9600); - + // You can adjust which sentences to have the module emit, below // Default is RMC + GGA GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA); @@ -50,7 +50,7 @@ void setup() GPS.sendCommand(PGCMD_ANTENNA); // Ask for firmware version GPS.sendCommand(PMTK_Q_RELEASE); - + Serial.print("\nSTARTING LOGGING...."); if (GPS.LOCUS_StartLogger()) Serial.println(" STARTED!"); @@ -65,38 +65,38 @@ void loop() // run over and over again char c = GPS.read(); // if you want to debug, this is a good time to do it! if ((c) && (GPSECHO)) - Serial.write(c); - + Serial.write(c); + if (millis() > updateTime) { updateTime = millis() + 1000; if (GPS.LOCUS_ReadStatus()) { - Serial.print("\n\nLog #"); + Serial.print("\n\nLog #"); Serial.print(GPS.LOCUS_serial, DEC); if (GPS.LOCUS_type == LOCUS_OVERLAP) Serial.print(", Overlap, "); else if (GPS.LOCUS_type == LOCUS_FULLSTOP) Serial.print(", Full Stop, Logging"); - + if (GPS.LOCUS_mode & 0x1) Serial.print(" AlwaysLocate"); if (GPS.LOCUS_mode & 0x2) Serial.print(" FixOnly"); if (GPS.LOCUS_mode & 0x4) Serial.print(" Normal"); if (GPS.LOCUS_mode & 0x8) Serial.print(" Interval"); if (GPS.LOCUS_mode & 0x10) Serial.print(" Distance"); if (GPS.LOCUS_mode & 0x20) Serial.print(" Speed"); - + Serial.print(", Content "); Serial.print((int)GPS.LOCUS_config); Serial.print(", Interval "); Serial.print((int)GPS.LOCUS_interval); Serial.print(" sec, Distance "); Serial.print((int)GPS.LOCUS_distance); Serial.print(" m, Speed "); Serial.print((int)GPS.LOCUS_speed); - Serial.print(" m/s, Status "); - if (GPS.LOCUS_status) + Serial.print(" m/s, Status "); + if (GPS.LOCUS_status) Serial.print("LOGGING, "); - else + else Serial.print("OFF, "); Serial.print((int)GPS.LOCUS_records); Serial.print(" Records, "); - Serial.print((int)GPS.LOCUS_percent); Serial.print("% Used "); - + Serial.print((int)GPS.LOCUS_percent); Serial.print("% Used "); + }//if (GPS.LOCUS_ReadStatus()) }//if (millis() > updateTime) }//loop diff --git a/examples/GPS_HardwareSerial_Parsing/.esp8266.test.skip b/examples/GPS_HardwareSerial_Parsing/.esp8266.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/GPS_HardwareSerial_Parsing/.uno.test.skip b/examples/GPS_HardwareSerial_Parsing/.uno.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/GPS_HardwareSerial_Parsing/GPS_HardwareSerial_Parsing.ino b/examples/GPS_HardwareSerial_Parsing/GPS_HardwareSerial_Parsing.ino index a059e9c..711d79c 100644 --- a/examples/GPS_HardwareSerial_Parsing/GPS_HardwareSerial_Parsing.ino +++ b/examples/GPS_HardwareSerial_Parsing/GPS_HardwareSerial_Parsing.ino @@ -10,10 +10,10 @@ // but also works with the shield, breakout // ------> https://www.adafruit.com/products/1272 // ------> https://www.adafruit.com/products/746 -// +// // Pick one up today at the Adafruit electronics shop // and help support open source hardware & software! -ada - + #include // what's the name of the hardware serial port? @@ -21,7 +21,7 @@ // Connect to the GPS on the hardware port Adafruit_GPS GPS(&GPSSerial); - + // Set GPSECHO to 'false' to turn off echoing the GPS data to the Serial console // Set to 'true' if you want to debug and listen to the raw GPS sentences #define GPSECHO false @@ -32,12 +32,12 @@ uint32_t timer = millis(); void setup() { //while (!Serial); // uncomment to have the sketch wait until Serial is ready - + // connect at 115200 so we can read the GPS fast enough and echo without dropping chars // also spit it out Serial.begin(115200); Serial.println("Adafruit GPS library basic test!"); - + // 9600 NMEA is the default baud rate for Adafruit MTK GPS's- some use 4800 GPS.begin(9600); // uncomment this line to turn on RMC (recommended minimum) and GGA (fix data) including altitude @@ -50,12 +50,12 @@ void setup() GPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ); // 1 Hz update rate // For the parsing code to work nicely and have time to sort thru the data, and // print it out we don't suggest using anything higher than 1 Hz - + // Request updates on antenna status, comment out to keep quiet GPS.sendCommand(PGCMD_ANTENNA); delay(1000); - + // Ask for firmware version GPSSerial.println(PMTK_Q_RELEASE); } @@ -78,7 +78,7 @@ void loop() // run over and over again } // if millis() or timer wraps around, we'll just reset it if (timer > millis()) timer = millis(); - + // approximately every 2 seconds or so, print out the current stats if (millis() - timer > 2000) { timer = millis(); // reset the timer @@ -104,4 +104,4 @@ void loop() // run over and over again Serial.print("Satellites: "); Serial.println((int)GPS.satellites); } } -} \ No newline at end of file +} diff --git a/examples/GPS_SoftwareSerial_EchoTest/.due.test.skip b/examples/GPS_SoftwareSerial_EchoTest/.due.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/GPS_SoftwareSerial_EchoTest/.esp32.test.skip b/examples/GPS_SoftwareSerial_EchoTest/.esp32.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/GPS_SoftwareSerial_EchoTest/.m4.test.skip b/examples/GPS_SoftwareSerial_EchoTest/.m4.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/GPS_SoftwareSerial_EchoTest/.zero.test.skip b/examples/GPS_SoftwareSerial_EchoTest/.zero.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/leo_echo/leo_echo.ino b/examples/GPS_SoftwareSerial_EchoTest/GPS_SoftwareSerial_EchoTest.ino similarity index 70% rename from examples/leo_echo/leo_echo.ino rename to examples/GPS_SoftwareSerial_EchoTest/GPS_SoftwareSerial_EchoTest.ino index 572d4bf..621f923 100644 --- a/examples/leo_echo/leo_echo.ino +++ b/examples/GPS_SoftwareSerial_EchoTest/GPS_SoftwareSerial_EchoTest.ino @@ -6,31 +6,20 @@ // Tested and works great with the Adafruit Ultimate GPS module // using MTK33x9 chipset // ------> http://www.adafruit.com/products/746 -// Pick one up today at the Adafruit electronics shop +// Pick one up today at the Adafruit electronics shop // and help support open source hardware & software! -ada -//This code is intended for use with Arduino Leonardo and other ATmega32U4-based Arduinos - #include #include // Connect the GPS Power pin to 5V // Connect the GPS Ground pin to ground -// If using software serial (sketch example default): -// Connect the GPS TX (transmit) pin to Digital 8 -// Connect the GPS RX (receive) pin to Digital 7 -// If using hardware serial: -// Connect the GPS TX (transmit) pin to Arduino RX1 (Digital 0) -// Connect the GPS RX (receive) pin to matching TX1 (Digital 1) +// Connect the GPS TX (transmit) pin to Digital 8 +// Connect the GPS RX (receive) pin to Digital 7 -// If using software serial, keep these lines enabled -// (you can change the pin numbers to match your wiring): +// You can change the pin numbers to match your wiring: SoftwareSerial mySerial(8, 7); -// If using hardware serial, comment -// out the above two lines and enable these two lines instead: -//HardwareSerial mySerial = Serial1; - #define PMTK_SET_NMEA_UPDATE_1HZ "$PMTK220,1000*1F" #define PMTK_SET_NMEA_UPDATE_5HZ "$PMTK220,200*2C" #define PMTK_SET_NMEA_UPDATE_10HZ "$PMTK220,100*2F" @@ -47,14 +36,14 @@ SoftwareSerial mySerial(8, 7); #define PMTK_Q_RELEASE "$PMTK605*31" void setup() { - while (!Serial); // wait for leo to be ready + while (!Serial); // wait for Serial to be ready Serial.begin(57600); // this baud rate doesn't actually matter! mySerial.begin(9600); delay(2000); Serial.println("Get version!"); mySerial.println(PMTK_Q_RELEASE); - + // you can send various commands to get it started //mySerial.println(PMTK_SET_NMEA_OUTPUT_RMCGGA); mySerial.println(PMTK_SET_NMEA_OUTPUT_ALLDATA); diff --git a/examples/GPS_SoftwareSerial_LOCUS_DumpBasic/.due.test.skip b/examples/GPS_SoftwareSerial_LOCUS_DumpBasic/.due.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/GPS_SoftwareSerial_LOCUS_DumpBasic/.esp32.test.skip b/examples/GPS_SoftwareSerial_LOCUS_DumpBasic/.esp32.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/GPS_SoftwareSerial_LOCUS_DumpBasic/.m4.test.skip b/examples/GPS_SoftwareSerial_LOCUS_DumpBasic/.m4.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/GPS_SoftwareSerial_LOCUS_DumpBasic/.zero.test.skip b/examples/GPS_SoftwareSerial_LOCUS_DumpBasic/.zero.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/leo_locus_dumpbasic/leo_locus_dumpbasic.ino b/examples/GPS_SoftwareSerial_LOCUS_DumpBasic/GPS_SoftwareSerial_LOCUS_DumpBasic.ino similarity index 58% rename from examples/leo_locus_dumpbasic/leo_locus_dumpbasic.ino rename to examples/GPS_SoftwareSerial_LOCUS_DumpBasic/GPS_SoftwareSerial_LOCUS_DumpBasic.ino index 9bc8cab..79374c8 100644 --- a/examples/leo_locus_dumpbasic/leo_locus_dumpbasic.ino +++ b/examples/GPS_SoftwareSerial_LOCUS_DumpBasic/GPS_SoftwareSerial_LOCUS_DumpBasic.ino @@ -7,35 +7,23 @@ // Tested and works great with the Adafruit Ultimate GPS module // using MTK33x9 chipset // ------> http://www.adafruit.com/products/746 -// Pick one up today at the Adafruit electronics shop +// Pick one up today at the Adafruit electronics shop // and help support open source hardware & software! -ada -//This code is intended for use with Arduino Leonardo and other ATmega32U4-based Arduinos - #include #include // Connect the GPS Power pin to 5V // Connect the GPS Ground pin to ground -// If using software serial (sketch example default): -// Connect the GPS TX (transmit) pin to Digital 8 -// Connect the GPS RX (receive) pin to Digital 7 -// If using hardware serial: -// Connect the GPS TX (transmit) pin to Arduino RX1 (Digital 0) -// Connect the GPS RX (receive) pin to matching TX1 (Digital 1) +// Connect the GPS TX (transmit) pin to Digital 8 +// Connect the GPS RX (receive) pin to Digital 7 -// If using software serial, keep these lines enabled -// (you can change the pin numbers to match your wiring): -//SoftwareSerial mySerial(8, 7); -//Adafruit_GPS GPS(&mySerial); +// you can change the pin numbers to match your wiring: +SoftwareSerial mySerial(8, 7); +Adafruit_GPS GPS(&mySerial); -// If using hardware serial, comment -// out the above two lines and enable these two lines instead: -Adafruit_GPS GPS(&Serial1); -#define mySerial Serial1 - -void setup() -{ +void setup() +{ while (!Serial); // Leonardo will wait till serial connects // connect at 115200 so we can read the GPS fast enuf and @@ -45,7 +33,7 @@ void setup() // 9600 NMEA is the default baud rate for MTK - some use 4800 GPS.begin(9600); - + GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_OFF); while (mySerial.available()) @@ -58,17 +46,15 @@ void setup() void loop() // run over and over again -{ - // If using hardware serial (e.g. Arduino Mega), change this to Serial1, etc. +{ if (mySerial.available()) { char c = mySerial.read(); if (c) { #ifdef UDR0 - UDR0 = c; + UDR0 = c; #else Serial.print(c); #endif } } } - diff --git a/examples/GPS_SoftwareSerial_LOCUS_Erase/.due.test.skip b/examples/GPS_SoftwareSerial_LOCUS_Erase/.due.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/GPS_SoftwareSerial_LOCUS_Erase/.esp32.test.skip b/examples/GPS_SoftwareSerial_LOCUS_Erase/.esp32.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/GPS_SoftwareSerial_LOCUS_Erase/.m4.test.skip b/examples/GPS_SoftwareSerial_LOCUS_Erase/.m4.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/GPS_SoftwareSerial_LOCUS_Erase/.zero.test.skip b/examples/GPS_SoftwareSerial_LOCUS_Erase/.zero.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/leo_locus_erase/leo_locus_erase.ino b/examples/GPS_SoftwareSerial_LOCUS_Erase/GPS_SoftwareSerial_LOCUS_Erase.ino similarity index 70% rename from examples/leo_locus_erase/leo_locus_erase.ino rename to examples/GPS_SoftwareSerial_LOCUS_Erase/GPS_SoftwareSerial_LOCUS_Erase.ino index 9b74e9c..e3b07c4 100644 --- a/examples/leo_locus_erase/leo_locus_erase.ino +++ b/examples/GPS_SoftwareSerial_LOCUS_Erase/GPS_SoftwareSerial_LOCUS_Erase.ino @@ -5,32 +5,20 @@ // Tested and works great with the Adafruit Ultimate GPS module // using MTK33x9 chipset // ------> http://www.adafruit.com/products/746 -// Pick one up today at the Adafruit electronics shop +// Pick one up today at the Adafruit electronics shop // and help support open source hardware & software! -ada -//This code is intended for use with Arduino Leonardo and other ATmega32U4-based Arduinos - #include #include // Connect the GPS Power pin to 5V // Connect the GPS Ground pin to ground -// If using software serial (sketch example default): -// Connect the GPS TX (transmit) pin to Digital 8 -// Connect the GPS RX (receive) pin to Digital 7 -// If using hardware serial: -// Connect the GPS TX (transmit) pin to Arduino RX1 (Digital 0) -// Connect the GPS RX (receive) pin to matching TX1 (Digital 1) +// Connect the GPS TX (transmit) pin to Digital 8 +// Connect the GPS RX (receive) pin to Digital 7 -// If using software serial, keep these lines enabled -// (you can change the pin numbers to match your wiring): -//SoftwareSerial mySerial(8, 7); -//Adafruit_GPS GPS(&mySerial); - -// If using hardware serial, comment -// out the above two lines and enable these two lines instead: -Adafruit_GPS GPS(&Serial1); -HardwareSerial mySerial = Serial1; +// you can change the pin numbers to match your wiring: +SoftwareSerial mySerial(8, 7); +Adafruit_GPS GPS(&mySerial); // Set GPSECHO to 'false' to turn off echoing the GPS data to the Serial console // Set to 'true' if you want to debug and listen to the raw GPS sentences @@ -38,13 +26,14 @@ HardwareSerial mySerial = Serial1; // this keeps track of whether we're using the interrupt // off by default! +#ifndef ESP8266 // Sadly not on ESP8266 boolean usingInterrupt = false; -void useInterrupt(boolean); // Func prototype keeps Arduino 0023 happy +#endif -void setup() -{ +void setup() +{ while (!Serial) ; //wait for serial port on Leonardo - + // connect at 115200 so we can read the GPS fast enuf and // also spit it out Serial.begin(115200); @@ -52,13 +41,15 @@ void setup() // 9600 NMEA is the default baud rate for MTK GPS.begin(9600); - + GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_OFF); // the nice thing about this code is you can have a timer0 interrupt go off // every 1 millisecond, and read data from the GPS for you. that makes the // loop code a heck of a lot easier! +#ifndef ESP8266 // Not on ESP8266 useInterrupt(true); +#endif Serial.println("This code will ERASE the data log stored in the FLASH - Permanently!"); Serial.print("Are you sure you want to do this? [Y/N]: "); @@ -72,20 +63,21 @@ void setup() void loop() // run over and over again { if (mySerial.available()) { - Serial.write(mySerial.read()); + Serial.write(mySerial.read()); } } /******************************************************************/ // Interrupt is called once a millisecond, looks for any new GPS data, and stores it -SIGNAL(TIMER0_COMPA_vect) { +#ifndef ESP8266 // Not on ESP8266 +ISR(TIMER0_COMPA_vect) { char c = GPS.read(); // if you want to debug, this is a good time to do it! if (GPSECHO && c) { #ifdef UDR0 - UDR0 = c; - // writing direct to UDR0 is much much faster than Serial.print - // but only one character can be written at a time. + UDR0 = c; + // writing direct to UDR0 is much much faster than Serial.print + // but only one character can be written at a time. #else Serial.write(c); #endif @@ -105,5 +97,4 @@ void useInterrupt(boolean v) { usingInterrupt = false; } } - - +#endif // ESP8266 diff --git a/examples/GPS_SoftwareSerial_LOCUS_Start/.due.test.skip b/examples/GPS_SoftwareSerial_LOCUS_Start/.due.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/GPS_SoftwareSerial_LOCUS_Start/.esp32.test.skip b/examples/GPS_SoftwareSerial_LOCUS_Start/.esp32.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/GPS_SoftwareSerial_LOCUS_Start/.m4.test.skip b/examples/GPS_SoftwareSerial_LOCUS_Start/.m4.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/GPS_SoftwareSerial_LOCUS_Start/.zero.test.skip b/examples/GPS_SoftwareSerial_LOCUS_Start/.zero.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/leo_locus_start/leo_locus_start.ino b/examples/GPS_SoftwareSerial_LOCUS_Start/GPS_SoftwareSerial_LOCUS_Start.ino similarity index 72% rename from examples/leo_locus_start/leo_locus_start.ino rename to examples/GPS_SoftwareSerial_LOCUS_Start/GPS_SoftwareSerial_LOCUS_Start.ino index 44f4c6c..9ed5293 100644 --- a/examples/leo_locus_start/leo_locus_start.ino +++ b/examples/GPS_SoftwareSerial_LOCUS_Start/GPS_SoftwareSerial_LOCUS_Start.ino @@ -7,31 +7,20 @@ // Tested and works great with the Adafruit Ultimate GPS module // using MTK33x9 chipset // ------> http://www.adafruit.com/products/746 -// Pick one up today at the Adafruit electronics shop +// Pick one up today at the Adafruit electronics shop // and help support open source hardware & software! -ada -//This code is intended for use with Arduino Leonardo and other ATmega32U4-based Arduinos #include #include // Connect the GPS Power pin to 5V // Connect the GPS Ground pin to ground -// If using software serial (sketch example default): -// Connect the GPS TX (transmit) pin to Digital 8 -// Connect the GPS RX (receive) pin to Digital 7 -// If using hardware serial: -// Connect the GPS TX (transmit) pin to Arduino RX1 (Digital 0) -// Connect the GPS RX (receive) pin to matching TX1 (Digital 1) +// Connect the GPS TX (transmit) pin to Digital 8 +// Connect the GPS RX (receive) pin to Digital 7 -// If using software serial, keep these lines enabled -// (you can change the pin numbers to match your wiring): -//SoftwareSerial mySerial(8, 7); -//Adafruit_GPS GPS(&mySerial); - -// If using hardware serial, comment -// out the above two lines and enable these two lines instead: -Adafruit_GPS GPS(&Serial1); -HardwareSerial mySerial = Serial1; +// you can change the pin numbers to match your wiring: +SoftwareSerial mySerial(8, 7); +Adafruit_GPS GPS(&mySerial); // Set GPSECHO to 'false' to turn off echoing the GPS data to the Serial console // Set to 'true' if you want to debug and listen to the raw GPS sentences @@ -39,11 +28,12 @@ HardwareSerial mySerial = Serial1; // this keeps track of whether we're using the interrupt // off by default! +#ifndef ESP8266 // Sadly not on ESP8266 boolean usingInterrupt = false; -void useInterrupt(boolean); // Func prototype keeps Arduino 0023 happy +#endif -void setup() -{ +void setup() +{ // connect at 115200 so we can read the GPS fast enuf and // also spit it out Serial.begin(115200); @@ -53,7 +43,7 @@ void setup() // 9600 NMEA is the default baud rate for MTK - some use 4800 GPS.begin(9600); - + // You can adjust which sentences to have the module emit, below // Default is RMC + GGA GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA); @@ -63,7 +53,10 @@ void setup() // the nice thing about this code is you can have a timer0 interrupt go off // every 1 millisecond, and read data from the GPS for you. that makes the // loop code a heck of a lot easier! +#ifndef ESP8266 // Not on ESP8266 useInterrupt(true); +#endif + delay(500); Serial.print("\nSTARTING LOGGING...."); if (GPS.LOCUS_StartLogger()) @@ -81,14 +74,15 @@ void loop() // run over and over again /******************************************************************/ // Interrupt is called once a millisecond, looks for any new GPS data, and stores it -SIGNAL(TIMER0_COMPA_vect) { +#ifndef ESP8266 // Not on ESP8266 +ISR(TIMER0_COMPA_vect) { char c = GPS.read(); // if you want to debug, this is a good time to do it! if (GPSECHO && c) { #ifdef UDR0 - UDR0 = c; - // writing direct to UDR0 is much much faster than Serial.print - // but only one character can be written at a time. + UDR0 = c; + // writing direct to UDR0 is much much faster than Serial.print + // but only one character can be written at a time. #else Serial.write(c); #endif @@ -108,5 +102,4 @@ void useInterrupt(boolean v) { usingInterrupt = false; } } - - +#endif // ESP8266 diff --git a/examples/GPS_SoftwareSerial_LOCUS_Status/.due.test.skip b/examples/GPS_SoftwareSerial_LOCUS_Status/.due.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/GPS_SoftwareSerial_LOCUS_Status/.esp32.test.skip b/examples/GPS_SoftwareSerial_LOCUS_Status/.esp32.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/GPS_SoftwareSerial_LOCUS_Status/.m4.test.skip b/examples/GPS_SoftwareSerial_LOCUS_Status/.m4.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/GPS_SoftwareSerial_LOCUS_Status/.zero.test.skip b/examples/GPS_SoftwareSerial_LOCUS_Status/.zero.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/leo_locus_status/leo_locus_status.ino b/examples/GPS_SoftwareSerial_LOCUS_Status/GPS_SoftwareSerial_LOCUS_Status.ino similarity index 75% rename from examples/leo_locus_status/leo_locus_status.ino rename to examples/GPS_SoftwareSerial_LOCUS_Status/GPS_SoftwareSerial_LOCUS_Status.ino index 7115a8f..099482e 100644 --- a/examples/leo_locus_status/leo_locus_status.ino +++ b/examples/GPS_SoftwareSerial_LOCUS_Status/GPS_SoftwareSerial_LOCUS_Status.ino @@ -7,32 +7,20 @@ // Tested and works great with the Adafruit Ultimate GPS module // using MTK33x9 chipset // ------> http://www.adafruit.com/products/746 -// Pick one up today at the Adafruit electronics shop +// Pick one up today at the Adafruit electronics shop // and help support open source hardware & software! -ada -//This code is intended for use with Arduino Leonardo and other ATmega32U4-based Arduinos - #include #include // Connect the GPS Power pin to 5V // Connect the GPS Ground pin to ground -// If using software serial (sketch example default): -// Connect the GPS TX (transmit) pin to Digital 8 -// Connect the GPS RX (receive) pin to Digital 7 -// If using hardware serial: -// Connect the GPS TX (transmit) pin to Arduino RX1 (Digital 0) -// Connect the GPS RX (receive) pin to matching TX1 (Digital 1) +// Connect the GPS TX (transmit) pin to Digital 8 +// Connect the GPS RX (receive) pin to Digital 7 -// If using software serial, keep these lines enabled -// (you can change the pin numbers to match your wiring): -//SoftwareSerial mySerial(8, 7); -//Adafruit_GPS GPS(&mySerial); - -// If using hardware serial, comment -// out the above two lines and enable these two lines instead: -Adafruit_GPS GPS(&Serial1); -HardwareSerial mySerial = Serial1; +// you can change the pin numbers to match your wiring: +SoftwareSerial mySerial(8, 7); +Adafruit_GPS GPS(&mySerial); // Set GPSECHO to 'false' to turn off echoing the GPS data to the Serial console // Set to 'true' if you want to debug and listen to the raw GPS sentences @@ -40,11 +28,12 @@ HardwareSerial mySerial = Serial1; // this keeps track of whether we're using the interrupt // off by default! +#ifndef ESP8266 // Sadly not on ESP8266 boolean usingInterrupt = false; -void useInterrupt(boolean); // Func prototype keeps Arduino 0023 happy +#endif -void setup() -{ +void setup() +{ while (!Serial); // the Leonardo will 'wait' until the USB plug is connected // connect at 115200 so we can read the GPS fast enuf and @@ -54,7 +43,7 @@ void setup() // 9600 NMEA is the default baud rate for MTK - some use 4800 GPS.begin(9600); - + // You can adjust which sentences to have the module emit, below // Default is RMC + GGA GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA); @@ -64,7 +53,9 @@ void setup() // the nice thing about this code is you can have a timer0 interrupt go off // every 1 millisecond, and read data from the GPS for you. that makes the // loop code a heck of a lot easier! +#ifndef ESP8266 // Not on ESP8266 useInterrupt(true); +#endif while (true) { Serial.print("Starting logging...."); @@ -84,38 +75,38 @@ void loop() // run over and over again char c = GPS.read(); // if you want to debug, this is a good time to do it! if ((c) && (GPSECHO)) - Serial.write(c); - + Serial.write(c); + if (millis() > updateTime) { updateTime = millis() + 1000; if (GPS.LOCUS_ReadStatus()) { - Serial.print("\n\nLog #"); + Serial.print("\n\nLog #"); Serial.print(GPS.LOCUS_serial, DEC); if (GPS.LOCUS_type == LOCUS_OVERLAP) Serial.print(", Overlap, "); else if (GPS.LOCUS_type == LOCUS_FULLSTOP) Serial.print(", Full Stop, Logging"); - + if (GPS.LOCUS_mode & 0x1) Serial.print(" AlwaysLocate"); if (GPS.LOCUS_mode & 0x2) Serial.print(" FixOnly"); if (GPS.LOCUS_mode & 0x4) Serial.print(" Normal"); if (GPS.LOCUS_mode & 0x8) Serial.print(" Interval"); if (GPS.LOCUS_mode & 0x10) Serial.print(" Distance"); if (GPS.LOCUS_mode & 0x20) Serial.print(" Speed"); - + Serial.print(", Content "); Serial.print((int)GPS.LOCUS_config); Serial.print(", Interval "); Serial.print((int)GPS.LOCUS_interval); Serial.print(" sec, Distance "); Serial.print((int)GPS.LOCUS_distance); Serial.print(" m, Speed "); Serial.print((int)GPS.LOCUS_speed); - Serial.print(" m/s, Status "); - if (GPS.LOCUS_status) + Serial.print(" m/s, Status "); + if (GPS.LOCUS_status) Serial.print("LOGGING, "); - else + else Serial.print("OFF, "); Serial.print((int)GPS.LOCUS_records); Serial.print(" Records, "); - Serial.print((int)GPS.LOCUS_percent); Serial.print("% Used "); - + Serial.print((int)GPS.LOCUS_percent); Serial.print("% Used "); + }//if (GPS.LOCUS_ReadStatus()) }//if (millis() > updateTime) }//loop @@ -123,19 +114,19 @@ void loop() // run over and over again /******************************************************************/ // Interrupt is called once a millisecond, looks for any new GPS data, and stores it -SIGNAL(TIMER0_COMPA_vect) { +#ifndef ESP8266 // Not on ESP8266 +ISR(TIMER0_COMPA_vect) { char c = GPS.read(); // if you want to debug, this is a good time to do it! - if (GPSECHO && c) { #ifdef UDR0 - UDR0 = c; - // writing direct to UDR0 is much much faster than Serial.print - // but only one character can be written at a time. + // writing direct to UDR0 is much much faster than Serial.print + // but only one character can be written at a time. + UDR0 = c; +#else + Serial.print(c); #endif - } } - void useInterrupt(boolean v) { if (v) { // Timer0 is already used for millis() - we'll just interrupt somewhere @@ -149,7 +140,4 @@ void useInterrupt(boolean v) { usingInterrupt = false; } } - - - - +#endif // ESP8266 diff --git a/examples/GPS_SoftwareSerial_Parsing/.due.test.skip b/examples/GPS_SoftwareSerial_Parsing/.due.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/GPS_SoftwareSerial_Parsing/.esp32.test.skip b/examples/GPS_SoftwareSerial_Parsing/.esp32.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/GPS_SoftwareSerial_Parsing/.m4.test.skip b/examples/GPS_SoftwareSerial_Parsing/.m4.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/GPS_SoftwareSerial_Parsing/.zero.test.skip b/examples/GPS_SoftwareSerial_Parsing/.zero.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/leo_parsing/leo_parsing.ino b/examples/GPS_SoftwareSerial_Parsing/GPS_SoftwareSerial_Parsing.ino similarity index 79% rename from examples/leo_parsing/leo_parsing.ino rename to examples/GPS_SoftwareSerial_Parsing/GPS_SoftwareSerial_Parsing.ino index d18c3b4..169ef87 100644 --- a/examples/leo_parsing/leo_parsing.ino +++ b/examples/GPS_SoftwareSerial_Parsing/GPS_SoftwareSerial_Parsing.ino @@ -8,40 +8,28 @@ // Tested and works great with the Adafruit Ultimate GPS module // using MTK33x9 chipset // ------> http://www.adafruit.com/products/746 -// Pick one up today at the Adafruit electronics shop +// Pick one up today at the Adafruit electronics shop // and help support open source hardware & software! -ada -//This code is intended for use with Arduino Leonardo and other ATmega32U4-based Arduinos - #include #include // Connect the GPS Power pin to 5V // Connect the GPS Ground pin to ground -// If using software serial (sketch example default): -// Connect the GPS TX (transmit) pin to Digital 8 -// Connect the GPS RX (receive) pin to Digital 7 -// If using hardware serial: -// Connect the GPS TX (transmit) pin to Arduino RX1 (Digital 0) -// Connect the GPS RX (receive) pin to matching TX1 (Digital 1) +// Connect the GPS TX (transmit) pin to Digital 8 +// Connect the GPS RX (receive) pin to Digital 7 -// If using software serial, keep these lines enabled -// (you can change the pin numbers to match your wiring): -//SoftwareSerial mySerial(8, 7); -//Adafruit_GPS GPS(&mySerial); - -// If using hardware serial, comment -// out the above two lines and enable these two lines instead: -Adafruit_GPS GPS(&Serial1); -HardwareSerial mySerial = Serial1; +// you can change the pin numbers to match your wiring: +SoftwareSerial mySerial(8, 7); +Adafruit_GPS GPS(&mySerial); // Set GPSECHO to 'false' to turn off echoing the GPS data to the Serial console // Set to 'true' if you want to debug and listen to the raw GPS sentences #define GPSECHO true -void setup() +void setup() { - + // connect at 115200 so we can read the GPS fast enough and echo without dropping chars // also spit it out Serial.begin(115200); @@ -50,14 +38,14 @@ void setup() // 9600 NMEA is the default baud rate for Adafruit MTK GPS's- some use 4800 GPS.begin(9600); - + // uncomment this line to turn on RMC (recommended minimum) and GGA (fix data) including altitude GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA); // uncomment this line to turn on only the "minimum recommended" data //GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCONLY); // For parsing data, we don't suggest using anything but either RMC only or RMC+GGA since // the parser doesn't care about other sentences at this time - + // Set the update rate GPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ); // 1 Hz update rate // For the parsing code to work nicely and have time to sort thru the data, and @@ -77,15 +65,15 @@ void loop() // run over and over again char c = GPS.read(); // if you want to debug, this is a good time to do it! if ((c) && (GPSECHO)) - Serial.write(c); - + Serial.write(c); + // if a sentence is received, we can check the checksum, parse it... if (GPS.newNMEAreceived()) { // a tricky thing here is if we print the NMEA sentence, or data - // we end up not listening and catching other sentences! + // we end up not listening and catching other sentences! // so be very wary if using OUTPUT_ALLDATA and trytng to print out data //Serial.println(GPS.lastNMEA()); // this also sets the newNMEAreceived() flag to false - + if (!GPS.parse(GPS.lastNMEA())) // this also sets the newNMEAreceived() flag to false return; // we can fail to parse a sentence in which case we should just wait for another } @@ -94,9 +82,9 @@ void loop() // run over and over again if (timer > millis()) timer = millis(); // approximately every 2 seconds or so, print out the current stats - if (millis() - timer > 2000) { + if (millis() - timer > 2000) { timer = millis(); // reset the timer - + Serial.print("\nTime: "); Serial.print(GPS.hour, DEC); Serial.print(':'); Serial.print(GPS.minute, DEC); Serial.print(':'); @@ -107,13 +95,13 @@ void loop() // run over and over again 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); + Serial.print(" quality: "); Serial.println((int)GPS.fixquality); if (GPS.fix) { Serial.print("Location: "); Serial.print(GPS.latitude, 4); Serial.print(GPS.lat); - Serial.print(", "); + Serial.print(", "); Serial.print(GPS.longitude, 4); Serial.println(GPS.lon); - + Serial.print("Speed (knots): "); Serial.println(GPS.speed); Serial.print("Angle: "); Serial.println(GPS.angle); Serial.print("Altitude: "); Serial.println(GPS.altitude); diff --git a/examples/blank/blank.pde b/examples/blank/blank.ino similarity index 100% rename from examples/blank/blank.pde rename to examples/blank/blank.ino diff --git a/examples/due_parsing/due_parsing.ino b/examples/due_parsing/due_parsing.ino deleted file mode 100644 index 207c683..0000000 --- a/examples/due_parsing/due_parsing.ino +++ /dev/null @@ -1,161 +0,0 @@ -// Test code for Adafruit GPS modules using MTK3329/MTK3339 driver -// -// This code shows how to listen to the GPS module in an interrupt -// which allows the program to have more 'freedom' - just parse -// when a new NMEA sentence is available! Then access data when -// desired. -// -// Tested and works great with the Adafruit Ultimate GPS module -// using MTK33x9 chipset -// ------> http://www.adafruit.com/products/746 -// Pick one up today at the Adafruit electronics shop -// and help support open source hardware & software! -ada - -#include - -// This sketch is ONLY for the Arduino Due! -// You should make the following connections with the Due and GPS module: -// GPS power pin to Arduino Due 3.3V output. -// GPS ground pin to Arduino Due ground. -// For hardware serial 1 (recommended): -// GPS TX to Arduino Due Serial1 RX pin 19 -// GPS RX to Arduino Due Serial1 TX pin 18 -#define mySerial Serial1 - -Adafruit_GPS GPS(&mySerial); - - -// Set GPSECHO to 'false' to turn off echoing the GPS data to the Serial console -// Set to 'true' if you want to debug and listen to the raw GPS sentences. -#define GPSECHO true - -// this keeps track of whether we're using the interrupt -// off by default! -boolean usingInterrupt = false; -void useInterrupt(boolean); // Func prototype keeps Arduino 0023 happy - -void setup() -{ - - // connect at 115200 so we can read the GPS fast enough and echo without dropping chars - // also spit it out - Serial.begin(115200); - Serial.println("Adafruit GPS library basic test!"); - - // 9600 NMEA is the default baud rate for Adafruit MTK GPS's- some use 4800 - GPS.begin(9600); - mySerial.begin(9600); - - // uncomment this line to turn on RMC (recommended minimum) and GGA (fix data) including altitude - GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA); - // uncomment this line to turn on only the "minimum recommended" data - //GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCONLY); - // For parsing data, we don't suggest using anything but either RMC only or RMC+GGA since - // the parser doesn't care about other sentences at this time - - // Set the update rate - GPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ); // 1 Hz update rate - // For the parsing code to work nicely and have time to sort thru the data, and - // print it out we don't suggest using anything higher than 1 Hz - - // Request updates on antenna status, comment out to keep quiet - GPS.sendCommand(PGCMD_ANTENNA); - - // the nice thing about this code is you can have a timer0 interrupt go off - // every 1 millisecond, and read data from the GPS for you. that makes the - // loop code a heck of a lot easier! - -#ifdef __arm__ - usingInterrupt = false; //NOTE - we don't want to use interrupts on the Due -#else - useInterrupt(true); -#endif - - delay(1000); - // Ask for firmware version - mySerial.println(PMTK_Q_RELEASE); -} - -#ifdef __AVR__ -// Interrupt is called once a millisecond, looks for any new GPS data, and stores it -SIGNAL(TIMER0_COMPA_vect) { - char c = GPS.read(); - // if you want to debug, this is a good time to do it! -#ifdef UDR0 - if (GPSECHO) - if (c) UDR0 = c; - // writing direct to UDR0 is much much faster than Serial.print - // but only one character can be written at a time. -#endif -} - -void useInterrupt(boolean v) { - if (v) { - // Timer0 is already used for millis() - we'll just interrupt somewhere - // in the middle and call the "Compare A" function above - OCR0A = 0xAF; - TIMSK0 |= _BV(OCIE0A); - usingInterrupt = true; - } else { - // do not call the interrupt function COMPA anymore - TIMSK0 &= ~_BV(OCIE0A); - usingInterrupt = false; - } -} -#endif //#ifdef__AVR__ - -uint32_t timer = millis(); -void loop() // run over and over again -{ - // in case you are not using the interrupt above, you'll - // need to 'hand query' the GPS, not suggested :( - if (! usingInterrupt) { - // read data from the GPS in the 'main loop' - char c = GPS.read(); - // if you want to debug, this is a good time to do it! - if (GPSECHO) - if (c) Serial.print(c); - } - - // if a sentence is received, we can check the checksum, parse it... - if (GPS.newNMEAreceived()) { - // a tricky thing here is if we print the NMEA sentence, or data - // we end up not listening and catching other sentences! - // so be very wary if using OUTPUT_ALLDATA and trytng to print out data - //Serial.println(GPS.lastNMEA()); // this also sets the newNMEAreceived() flag to false - - if (!GPS.parse(GPS.lastNMEA())) // this also sets the newNMEAreceived() flag to false - return; // we can fail to parse a sentence in which case we should just wait for another - } - - // if millis() or timer wraps around, we'll just reset it - if (timer > millis()) timer = millis(); - - // approximately every 2 seconds or so, print out the current stats - if (millis() - timer > 2000) { - timer = millis(); // reset the timer - - Serial.print("\nTime: "); - Serial.print(GPS.hour, DEC); 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); - if (GPS.fix) { - Serial.print("Location: "); - Serial.print(GPS.latitude, 4); Serial.print(GPS.lat); - Serial.print(", "); - Serial.print(GPS.longitude, 4); Serial.println(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); - } - } -} diff --git a/examples/due_shield_sdlog/due_shield_sdlog.ino b/examples/due_shield_sdlog/due_shield_sdlog.ino deleted file mode 100644 index 9b32e27..0000000 --- a/examples/due_shield_sdlog/due_shield_sdlog.ino +++ /dev/null @@ -1,174 +0,0 @@ - -#include - -#ifdef __AVR__ - #include - #include -#endif - -#include -#include - - -// Ladyada's logger modified by Bill Greiman to use the SdFat library -// -// This code shows how to listen to the GPS module in an interrupt -// which allows the program to have more 'freedom' - just parse -// when a new NMEA sentence is available! Then access data when -// desired. -// -// Tested and works great with the Adafruit Ultimate GPS Shield -// using MTK33x9 chipset -// ------> http://www.adafruit.com/products/ -// Pick one up today at the Adafruit electronics shop -// and help support open source hardware & software! -ada - -#ifdef __AVR__ -SoftwareSerial mySerial(8, 7); -#else -#define mySerial Serial1 -#endif - -Adafruit_GPS GPS(&mySerial); - -// Set GPSECHO to 'false' to turn off echoing the GPS data to the Serial console -// Set to 'true' if you want to debug and listen to the raw GPS sentences -#define GPSECHO true -/* set to true to only log to SD when GPS has a fix, for debugging, keep it false */ -#define LOG_FIXONLY false - -// Set the pins used -#define chipSelect 10 -#define ledPin 13 - -File logfile; - -// read a Hex value and return the decimal equivalent -uint8_t parseHex(char c) { - if (c < '0') - return 0; - if (c <= '9') - return c - '0'; - if (c < 'A') - return 0; - if (c <= 'F') - return (c - 'A')+10; -} - -// blink out an error code -void error(uint8_t errno) { -/* - if (SD.errorCode()) { - putstring("SD error: "); - Serial.print(card.errorCode(), HEX); - Serial.print(','); - Serial.println(card.errorData(), HEX); - } - */ - while(1) { - uint8_t i; - for (i=0; i http://www.adafruit.com/products/746 -// Pick one up today at the Adafruit electronics shop -// and help support open source hardware & software! -ada - -#include -#if ARDUINO >= 100 - #include -#else - // Older Arduino IDE requires NewSoftSerial, download from: - // http://arduiniana.org/libraries/newsoftserial/ -// #include - // DO NOT install NewSoftSerial if using Arduino 1.0 or later! -#endif - -// Connect the GPS Power pin to 5V -// Connect the GPS Ground pin to ground -// If using software serial (sketch example default): -// Connect the GPS TX (transmit) pin to Digital 3 -// Connect the GPS RX (receive) pin to Digital 2 -// If using hardware serial (e.g. Arduino Mega): -// Connect the GPS TX (transmit) pin to Arduino RX1, RX2 or RX3 -// Connect the GPS RX (receive) pin to matching TX1, TX2 or TX3 - -// If using software serial, keep these lines enabled -// (you can change the pin numbers to match your wiring): -#if ARDUINO >= 100 - SoftwareSerial mySerial(3, 2); -#else - NewSoftSerial mySerial(3, 2); -#endif -Adafruit_GPS GPS(&mySerial); -// If using hardware serial (e.g. Arduino Mega), comment -// out the above six lines and enable this line instead: -//Adafruit_GPS GPS(&Serial1); - - -// Set GPSECHO to 'false' to turn off echoing the GPS data to the Serial console -// Set to 'true' if you want to debug and listen to the raw GPS sentences -#define GPSECHO true - -// this keeps track of whether we're using the interrupt -// off by default! -boolean usingInterrupt = false; -void useInterrupt(boolean); // Func prototype keeps Arduino 0023 happy - -void setup() -{ - // connect at 115200 so we can read the GPS fast enuf and - // also spit it out - Serial.begin(115200); - Serial.println("Adafruit GPS library basic test!"); - - // 9600 NMEA is the default baud rate for MTK - some use 4800 - GPS.begin(9600); - - // You can adjust which sentences to have the module emit, below - - // uncomment this line to turn on RMC (recommended minimum) and GGA (fix data) including altitude - GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA); - // uncomment this line to turn on only the "minimum recommended" data for high update rates! - //GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCONLY); - // uncomment this line to turn on all the available data - for 9600 baud you'll want 1 Hz rate - //GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_ALLDATA); - - // Set the update rate - // Note you must send both commands below to change both the output rate (how often the position - // is written to the serial line), and the position fix rate. - // 1 Hz update rate - //GPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ); - //GPS.sendCommand(PMTK_API_SET_FIX_CTL_1HZ); - // 5 Hz update rate- for 9600 baud you'll have to set the output to RMC or RMCGGA only (see above) - GPS.sendCommand(PMTK_SET_NMEA_UPDATE_5HZ); - GPS.sendCommand(PMTK_API_SET_FIX_CTL_5HZ); - // 10 Hz update rate - for 9600 baud you'll have to set the output to RMC only (see above) - // Note the position can only be updated at most 5 times a second so it will lag behind serial output. - //GPS.sendCommand(PMTK_SET_NMEA_UPDATE_10HZ); - //GPS.sendCommand(PMTK_API_SET_FIX_CTL_5HZ); - - // Request updates on antenna status, comment out to keep quiet - GPS.sendCommand(PGCMD_ANTENNA); - - // the nice thing about this code is you can have a timer0 interrupt go off - // every 1 millisecond, and read data from the GPS for you. that makes the - // loop code a heck of a lot easier! - useInterrupt(true); - - delay(1000); -} - -// Interrupt is called once a millisecond, looks for any new GPS data, and stores it -SIGNAL(TIMER0_COMPA_vect) { - char c = GPS.read(); - // if you want to debug, this is a good time to do it! - if (GPSECHO) - if (c) UDR0 = c; - // writing direct to UDR0 is much much faster than Serial.print - // but only one character can be written at a time. -} - -void useInterrupt(boolean v) { - if (v) { - // Timer0 is already used for millis() - we'll just interrupt somewhere - // in the middle and call the "Compare A" function above - OCR0A = 0xAF; - TIMSK0 |= _BV(OCIE0A); - usingInterrupt = true; - } else { - // do not call the interrupt function COMPA anymore - TIMSK0 &= ~_BV(OCIE0A); - usingInterrupt = false; - } -} - - -void loop() // run over and over again -{ - // do nothing! all reading and printing is done in the interrupt -} diff --git a/examples/flora_dumplog/flora_dumplog.ino b/examples/flora_dumplog/flora_dumplog.ino deleted file mode 100644 index 2814fcd..0000000 --- a/examples/flora_dumplog/flora_dumplog.ino +++ /dev/null @@ -1,41 +0,0 @@ -#include -#include -Adafruit_GPS GPS(&Serial1); - -// Set GPSECHO to 'false' to turn off echoing the GPS data to the Serial console -// Set to 'true' if you want to debug and listen to the raw GPS sentences -#define GPSECHO true - -// this keeps track of whether we're using the interrupt -// off by default! -boolean usingInterrupt = false; - -void setup() -{ - while (!Serial); - // connect at 115200 so we can read the GPS fast enuf and - // also spit it out - Serial.begin(115200); - Serial.println("Adafruit GPS logging dump test!"); - - // 9600 NMEA is the default baud rate for MTK - some use 4800 - GPS.begin(9600); - - GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_OFF); - - while (Serial1.available()) - Serial1.read(); - - delay(1000); - GPS.sendCommand("$PMTK622,1*29"); - Serial.println("----------------------------------------------------"); -} - - -void loop() // run over and over again -{ - if (Serial1.available()) { - char c = Serial1.read(); - if (c) Serial.print(c); - } -} diff --git a/examples/flora_gpslog/flora_gpslog.ino b/examples/flora_gpslog/flora_gpslog.ino deleted file mode 100644 index ba29a06..0000000 --- a/examples/flora_gpslog/flora_gpslog.ino +++ /dev/null @@ -1,81 +0,0 @@ -#include -#include -Adafruit_GPS GPS(&Serial1); - -// Set GPSECHO to 'false' to turn off echoing the GPS data to the Serial console -// Set to 'true' if you want to debug and listen to the raw GPS sentences -#define GPSECHO true - -// this keeps track of whether we're using the interrupt -// off by default! -boolean usingInterrupt = false; - -void setup() -{ - //while (!Serial); - // connect at 115200 so we can read the GPS fast enuf and - // also spit it out - Serial.begin(115200); - Serial.println("Adafruit GPS logging start test!"); - - // 9600 NMEA is the default baud rate for MTK - some use 4800 - GPS.begin(9600); - - // You can adjust which sentences to have the module emit, below - // Default is RMC + GGA - GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA); - // Default is 1 Hz update rate - GPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ); - - // the nice thing about this code is you can have a timer0 interrupt go off - // every 1 millisecond, and read data from the GPS for you. that makes the - // loop code a heck of a lot easier! - useInterrupt(true); - - delay(500); - while (true) { - Serial.print("Starting logging...."); - if (GPS.LOCUS_StartLogger()) { - Serial.println(" STARTED!"); - break; - } else { - Serial.println(" no response :("); - } - } -} - - - -void loop() // run over and over again -{ - pinMode(7, OUTPUT); - digitalWrite(7, HIGH); - delay(200); - digitalWrite(7, LOW); - delay(200); -} - -/******************************************************************/ -// Interrupt is called once a millisecond, looks for any new GPS data, and stores it -SIGNAL(TIMER0_COMPA_vect) { - char c = GPS.read(); - // if you want to debug, this is a good time to do it! - if (GPSECHO) - if (c) Serial.print(c); -} - -void useInterrupt(boolean v) { - if (v) { - // Timer0 is already used for millis() - we'll just interrupt somewhere - // in the middle and call the "Compare A" function above - OCR0A = 0xAF; - TIMSK0 |= _BV(OCIE0A); - usingInterrupt = true; - } else { - // do not call the interrupt function COMPA anymore - TIMSK0 &= ~_BV(OCIE0A); - usingInterrupt = false; - } -} - - diff --git a/examples/locus_dumpbasic/locus_dumpbasic.pde b/examples/locus_dumpbasic/locus_dumpbasic.pde deleted file mode 100644 index 9a89a61..0000000 --- a/examples/locus_dumpbasic/locus_dumpbasic.pde +++ /dev/null @@ -1,82 +0,0 @@ -// Test code for Adafruit GPS modules using MTK3329/MTK3339 driver -// -// This code turns on the LOCUS built-in datalogger. The datalogger -// turns off when power is lost, so you MUST turn it on every time -// you want to use it! -// -// Tested and works great with the Adafruit Ultimate GPS module -// using MTK33x9 chipset -// ------> http://www.adafruit.com/products/746 -// Pick one up today at the Adafruit electronics shop -// and help support open source hardware & software! -ada - -#include -#if ARDUINO >= 100 - #include -#else - // Older Arduino IDE requires NewSoftSerial, download from: - // http://arduiniana.org/libraries/newsoftserial/ -// #include - // DO NOT install NewSoftSerial if using Arduino 1.0 or later! -#endif - -// Connect the GPS Power pin to 5V -// Connect the GPS Ground pin to ground -// If using software serial (sketch example default): -// Connect the GPS TX (transmit) pin to Digital 3 -// Connect the GPS RX (receive) pin to Digital 2 -// If using hardware serial (e.g. Arduino Mega): -// Connect the GPS TX (transmit) pin to Arduino RX1, RX2 or RX3 -// Connect the GPS RX (receive) pin to matching TX1, TX2 or TX3 - -// If using software serial, keep these lines enabled -// (you can change the pin numbers to match your wiring): -#if ARDUINO >= 100 - SoftwareSerial mySerial(3, 2); -#else - NewSoftSerial mySerial(3, 2); -#endif -Adafruit_GPS GPS(&mySerial); -// If using hardware serial (e.g. Arduino Mega), comment -// out the above six lines and enable this line instead: -//Adafruit_GPS GPS(&Serial1); - -void setup() -{ - while (!Serial); // Leonardo will wait till serial connects - - // connect at 115200 so we can read the GPS fast enuf and - // also spit it out - Serial.begin(115200); - Serial.println("Adafruit GPS logging start test!"); - - // 9600 NMEA is the default baud rate for MTK - some use 4800 - GPS.begin(9600); - - GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_OFF); - - // If using hardware serial (e.g. Arduino Mega), change this to Serial1, etc. - while (mySerial.available()) - mySerial.read(); - - delay(1000); - GPS.sendCommand("$PMTK622,1*29"); - Serial.println("----------------------------------------------------"); -} - - -void loop() // run over and over again -{ - // If using hardware serial (e.g. Arduino Mega), change this to Serial1, etc. - if (mySerial.available()) { - char c = mySerial.read(); - if (c) { -#ifdef UDR0 - UDR0 = c; -#else - Serial.print(c); -#endif - } - } -} - diff --git a/examples/locus_erase/locus_erase.pde b/examples/locus_erase/locus_erase.pde deleted file mode 100644 index bc2d36c..0000000 --- a/examples/locus_erase/locus_erase.pde +++ /dev/null @@ -1,115 +0,0 @@ -// Test code for Adafruit GPS modules using MTK3329/MTK3339 driver -// -// This code erases the LOCUS built-in datalogger storage -// -// Tested and works great with the Adafruit Ultimate GPS module -// using MTK33x9 chipset -// ------> http://www.adafruit.com/products/746 -// Pick one up today at the Adafruit electronics shop -// and help support open source hardware & software! -ada - -#include -#if ARDUINO >= 100 - #include -#else - // Older Arduino IDE requires NewSoftSerial, download from: - // http://arduiniana.org/libraries/newsoftserial/ -// #include - // DO NOT install NewSoftSerial if using Arduino 1.0 or later! -#endif - -// Connect the GPS Power pin to 5V -// Connect the GPS Ground pin to ground -// If using software serial (sketch example default): -// Connect the GPS TX (transmit) pin to Digital 3 -// Connect the GPS RX (receive) pin to Digital 2 -// If using hardware serial (e.g. Arduino Mega): -// Connect the GPS TX (transmit) pin to Arduino RX1, RX2 or RX3 -// Connect the GPS RX (receive) pin to matching TX1, TX2 or TX3 - -// If using software serial, keep these lines enabled -// (you can change the pin numbers to match your wiring): -#if ARDUINO >= 100 - SoftwareSerial mySerial(3, 2); -#else - NewSoftSerial mySerial(3, 2); -#endif -Adafruit_GPS GPS(&mySerial); -// If using hardware serial (e.g. Arduino Mega), comment -// out the above six lines and enable this line instead: -//Adafruit_GPS GPS(&Serial1); - - -// Set GPSECHO to 'false' to turn off echoing the GPS data to the Serial console -// Set to 'true' if you want to debug and listen to the raw GPS sentences -#define GPSECHO false - -// this keeps track of whether we're using the interrupt -// off by default! -boolean usingInterrupt = false; -void useInterrupt(boolean); // Func prototype keeps Arduino 0023 happy - -void setup() -{ - // connect at 115200 so we can read the GPS fast enuf and - // also spit it out - Serial.begin(115200); - Serial.println("Adafruit GPS erase FLASH!"); - - // 9600 NMEA is the default baud rate for MTK - GPS.begin(9600); - - GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_OFF); - - // the nice thing about this code is you can have a timer0 interrupt go off - // every 1 millisecond, and read data from the GPS for you. that makes the - // loop code a heck of a lot easier! - useInterrupt(true); - - Serial.println("This code will ERASE the data log stored in the FLASH - Permanently!"); - Serial.print("Are you sure you want to do this? [Y/N]: "); - while (Serial.read() != 'Y') delay(10); - Serial.println("\nERASING! UNPLUG YOUR ARDUINO WITHIN 5 SECONDS IF YOU DIDNT MEAN TO!"); - delay(5000); - GPS.sendCommand(PMTK_LOCUS_ERASE_FLASH); - Serial.println("Erased"); -} - - - -void loop() // run over and over again -{ - // If using hardware serial (e.g. Arduino Mega), change this to Serial1, etc. - if (mySerial.available()) { - char c = mySerial.read(); - if (c) UDR0 = c; - } -} - -/******************************************************************/ -// Interrupt is called once a millisecond, looks for any new GPS data, and stores it -SIGNAL(TIMER0_COMPA_vect) { - char c = GPS.read(); - // if you want to debug, this is a good time to do it! - if (GPSECHO) - if (c) UDR0 = c; - // writing direct to UDR0 is much much faster than Serial.print - // but only one character can be written at a time. - -} - -void useInterrupt(boolean v) { - if (v) { - // Timer0 is already used for millis() - we'll just interrupt somewhere - // in the middle and call the "Compare A" function above - OCR0A = 0xAF; - TIMSK0 |= _BV(OCIE0A); - usingInterrupt = true; - } else { - // do not call the interrupt function COMPA anymore - TIMSK0 &= ~_BV(OCIE0A); - usingInterrupt = false; - } -} - - diff --git a/examples/locus_start/locus_start.pde b/examples/locus_start/locus_start.pde deleted file mode 100644 index 272be30..0000000 --- a/examples/locus_start/locus_start.pde +++ /dev/null @@ -1,121 +0,0 @@ -// Test code for Adafruit GPS modules using MTK3329/MTK3339 driver -// -// This code turns on the LOCUS built-in datalogger. The datalogger -// turns off when power is lost, so you MUST turn it on every time -// you want to use it! -// -// Tested and works great with the Adafruit Ultimate GPS module -// using MTK33x9 chipset -// ------> http://www.adafruit.com/products/746 -// Pick one up today at the Adafruit electronics shop -// and help support open source hardware & software! -ada - -#include -#if ARDUINO >= 100 - #include -#else - // Older Arduino IDE requires NewSoftSerial, download from: - // http://arduiniana.org/libraries/newsoftserial/ -// #include - // DO NOT install NewSoftSerial if using Arduino 1.0 or later! -#endif - -// Connect the GPS Power pin to 5V -// Connect the GPS Ground pin to ground -// If using software serial (sketch example default): -// Connect the GPS TX (transmit) pin to Digital 3 -// Connect the GPS RX (receive) pin to Digital 2 -// If using hardware serial (e.g. Arduino Mega): -// Connect the GPS TX (transmit) pin to Arduino RX1, RX2 or RX3 -// Connect the GPS RX (receive) pin to matching TX1, TX2 or TX3 - -// If using software serial, keep these lines enabled -// (you can change the pin numbers to match your wiring): -#if ARDUINO >= 100 - SoftwareSerial mySerial(3, 2); -#else - NewSoftSerial mySerial(3, 2); -#endif -Adafruit_GPS GPS(&mySerial); -// If using hardware serial (e.g. Arduino Mega), comment -// out the above six lines and enable this line instead: -//Adafruit_GPS GPS(&Serial1); - - -// Set GPSECHO to 'false' to turn off echoing the GPS data to the Serial console -// Set to 'true' if you want to debug and listen to the raw GPS sentences -#define GPSECHO true - -// this keeps track of whether we're using the interrupt -// off by default! -boolean usingInterrupt = false; -void useInterrupt(boolean); // Func prototype keeps Arduino 0023 happy - -void setup() -{ - while (!Serial); // the Leonardo will 'wait' until the USB plug is connected - - // connect at 115200 so we can read the GPS fast enuf and - // also spit it out - Serial.begin(115200); - Serial.println("Adafruit GPS logging start test!"); - - // 9600 NMEA is the default baud rate for MTK - some use 4800 - GPS.begin(9600); - - // You can adjust which sentences to have the module emit, below - // Default is RMC + GGA - GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA); - // Default is 1 Hz update rate - GPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ); - - // the nice thing about this code is you can have a timer0 interrupt go off - // every 1 millisecond, and read data from the GPS for you. that makes the - // loop code a heck of a lot easier! - useInterrupt(true); - delay(500); - Serial.print("\nSTARTING LOGGING...."); - if (GPS.LOCUS_StartLogger()) - Serial.println(" STARTED!"); - else - Serial.println(" no response :("); - delay(1000); -} - - - -void loop() // run over and over again -{ - // do nothing! all reading and printing is done in the interrupt -} - -/******************************************************************/ - -// Interrupt is called once a millisecond, looks for any new GPS data, and stores it -SIGNAL(TIMER0_COMPA_vect) { - char c = GPS.read(); - // if you want to debug, this is a good time to do it! - if (GPSECHO && c) { -#ifdef UDR0 - UDR0 = c; - // writing direct to UDR0 is much much faster than Serial.print - // but only one character can be written at a time. -#endif - } -} - -void useInterrupt(boolean v) { - if (v) { - // Timer0 is already used for millis() - we'll just interrupt somewhere - // in the middle and call the "Compare A" function above - OCR0A = 0xAF; - TIMSK0 |= _BV(OCIE0A); - usingInterrupt = true; - } else { - // do not call the interrupt function COMPA anymore - TIMSK0 &= ~_BV(OCIE0A); - usingInterrupt = false; - } -} - - diff --git a/examples/locus_status/locus_status.pde b/examples/locus_status/locus_status.pde deleted file mode 100644 index b746e75..0000000 --- a/examples/locus_status/locus_status.pde +++ /dev/null @@ -1,144 +0,0 @@ -// Test code for Adafruit GPS modules using MTK3329/MTK3339 driver -// -// This code turns on the LOCUS built-in datalogger. The datalogger -// turns off when power is lost, so you MUST turn it on every time -// you want to use it! -// -// Tested and works great with the Adafruit Ultimate GPS module -// using MTK33x9 chipset -// ------> http://www.adafruit.com/products/746 -// Pick one up today at the Adafruit electronics shop -// and help support open source hardware & software! -ada - -#include -#include - -// Connect the GPS Power pin to 5V -// Connect the GPS Ground pin to ground -// If using software serial (sketch example default): -// Connect the GPS TX (transmit) pin to Digital 3 -// Connect the GPS RX (receive) pin to Digital 2 -// If using hardware serial (e.g. Arduino Mega): -// Connect the GPS TX (transmit) pin to Arduino RX1, RX2 or RX3 -// Connect the GPS RX (receive) pin to matching TX1, TX2 or TX3 - -// If using software serial, keep these lines enabled -// (you can change the pin numbers to match your wiring): -SoftwareSerial mySerial(3, 2); - -Adafruit_GPS GPS(&mySerial); -// If using hardware serial (e.g. Arduino Mega), comment -// out the above six lines and enable this line instead: -//Adafruit_GPS GPS(&Serial1); - - -// Set GPSECHO to 'false' to turn off echoing the GPS data to the Serial console -// Set to 'true' if you want to debug and listen to the raw GPS sentences -#define GPSECHO false - -// this keeps track of whether we're using the interrupt -// off by default! -boolean usingInterrupt = false; -void useInterrupt(boolean); // Func prototype keeps Arduino 0023 happy - -void setup() -{ - while (!Serial); // the Leonardo will 'wait' until the USB plug is connected - - // connect at 115200 so we can read the GPS fast enuf and - // also spit it out - Serial.begin(115200); - Serial.println("Adafruit GPS logging start test!"); - - // 9600 NMEA is the default baud rate for MTK - some use 4800 - GPS.begin(9600); - - // You can adjust which sentences to have the module emit, below - // Default is RMC + GGA - GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA); - // Default is 1 Hz update rate - GPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ); - - // the nice thing about this code is you can have a timer0 interrupt go off - // every 1 millisecond, and read data from the GPS for you. that makes the - // loop code a heck of a lot easier! - useInterrupt(true); - - while (true) { - Serial.print("Starting logging...."); - if (GPS.LOCUS_StartLogger()) { - Serial.println(" STARTED!"); - break; - } else { - Serial.println(" no response :("); - } - } -} - - - -void loop() // run over and over again -{ - delay(1000); - - if (GPS.LOCUS_ReadStatus()) { - Serial.print("\n\nLog #"); - Serial.print(GPS.LOCUS_serial, DEC); - if (GPS.LOCUS_type == LOCUS_OVERLAP) - Serial.print(", Overlap, "); - else if (GPS.LOCUS_type == LOCUS_FULLSTOP) - Serial.print(", Full Stop, Logging"); - - if (GPS.LOCUS_mode & 0x1) Serial.print(" AlwaysLocate"); - if (GPS.LOCUS_mode & 0x2) Serial.print(" FixOnly"); - if (GPS.LOCUS_mode & 0x4) Serial.print(" Normal"); - if (GPS.LOCUS_mode & 0x8) Serial.print(" Interval"); - if (GPS.LOCUS_mode & 0x10) Serial.print(" Distance"); - if (GPS.LOCUS_mode & 0x20) Serial.print(" Speed"); - - Serial.print(", Content "); Serial.print((int)GPS.LOCUS_config); - Serial.print(", Interval "); Serial.print((int)GPS.LOCUS_interval); - Serial.print(" sec, Distance "); Serial.print((int)GPS.LOCUS_distance); - Serial.print(" m, Speed "); Serial.print((int)GPS.LOCUS_speed); - Serial.print(" m/s, Status "); - if (GPS.LOCUS_status) - Serial.print("LOGGING, "); - else - Serial.print("OFF, "); - Serial.print((int)GPS.LOCUS_records); Serial.print(" Records, "); - Serial.print((int)GPS.LOCUS_percent); Serial.print("% Used "); - - } -} - -/******************************************************************/ -// Interrupt is called once a millisecond, looks for any new GPS data, and stores it -SIGNAL(TIMER0_COMPA_vect) { - char c = GPS.read(); - // if you want to debug, this is a good time to do it! - if (GPSECHO && c) { -#ifdef UDR0 - UDR0 = c; - // writing direct to UDR0 is much much faster than Serial.print - // but only one character can be written at a time. -#endif - } -} - - -void useInterrupt(boolean v) { - if (v) { - // Timer0 is already used for millis() - we'll just interrupt somewhere - // in the middle and call the "Compare A" function above - OCR0A = 0xAF; - TIMSK0 |= _BV(OCIE0A); - usingInterrupt = true; - } else { - // do not call the interrupt function COMPA anymore - TIMSK0 &= ~_BV(OCIE0A); - usingInterrupt = false; - } -} - - - diff --git a/examples/parsing/parsing.pde b/examples/parsing/parsing.pde deleted file mode 100644 index 543a7bf..0000000 --- a/examples/parsing/parsing.pde +++ /dev/null @@ -1,175 +0,0 @@ -// Test code for Adafruit GPS modules using MTK3329/MTK3339 driver -// -// This code shows how to listen to the GPS module in an interrupt -// which allows the program to have more 'freedom' - just parse -// when a new NMEA sentence is available! Then access data when -// desired. -// -// Tested and works great with the Adafruit Ultimate GPS module -// using MTK33x9 chipset -// ------> http://www.adafruit.com/products/746 -// Pick one up today at the Adafruit electronics shop -// and help support open source hardware & software! -ada - -#include -#include - -// If you're using a GPS module: -// Connect the GPS Power pin to 5V -// Connect the GPS Ground pin to ground -// If using software serial (sketch example default): -// Connect the GPS TX (transmit) pin to Digital 3 -// Connect the GPS RX (receive) pin to Digital 2 -// If using hardware serial (e.g. Arduino Mega): -// Connect the GPS TX (transmit) pin to Arduino RX1, RX2 or RX3 -// Connect the GPS RX (receive) pin to matching TX1, TX2 or TX3 - -// If you're using the Adafruit GPS shield, change -// SoftwareSerial mySerial(3, 2); -> SoftwareSerial mySerial(8, 7); -// and make sure the switch is set to SoftSerial - -// If using software serial, keep this line enabled -// (you can change the pin numbers to match your wiring): -SoftwareSerial mySerial(3, 2); - -// If using hardware serial (e.g. Arduino Mega), comment out the -// above SoftwareSerial line, and enable this line instead -// (you can change the Serial number to match your wiring): - -//HardwareSerial mySerial = Serial1; - - -Adafruit_GPS GPS(&mySerial); - - -// Set GPSECHO to 'false' to turn off echoing the GPS data to the Serial console -// Set to 'true' if you want to debug and listen to the raw GPS sentences. -#define GPSECHO true - -// this keeps track of whether we're using the interrupt -// off by default! -boolean usingInterrupt = false; -void useInterrupt(boolean); // Func prototype keeps Arduino 0023 happy - -void setup() -{ - - // connect at 115200 so we can read the GPS fast enough and echo without dropping chars - // also spit it out - Serial.begin(115200); - Serial.println("Adafruit GPS library basic test!"); - - // 9600 NMEA is the default baud rate for Adafruit MTK GPS's- some use 4800 - GPS.begin(9600); - - // uncomment this line to turn on RMC (recommended minimum) and GGA (fix data) including altitude - GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA); - // uncomment this line to turn on only the "minimum recommended" data - //GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCONLY); - // For parsing data, we don't suggest using anything but either RMC only or RMC+GGA since - // the parser doesn't care about other sentences at this time - - // Set the update rate - GPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ); // 1 Hz update rate - // For the parsing code to work nicely and have time to sort thru the data, and - // print it out we don't suggest using anything higher than 1 Hz - - // Request updates on antenna status, comment out to keep quiet - GPS.sendCommand(PGCMD_ANTENNA); - - // the nice thing about this code is you can have a timer0 interrupt go off - // every 1 millisecond, and read data from the GPS for you. that makes the - // loop code a heck of a lot easier! - useInterrupt(true); - - delay(1000); - // Ask for firmware version - mySerial.println(PMTK_Q_RELEASE); -} - - -// Interrupt is called once a millisecond, looks for any new GPS data, and stores it -SIGNAL(TIMER0_COMPA_vect) { - char c = GPS.read(); - // if you want to debug, this is a good time to do it! -#ifdef UDR0 - if (GPSECHO) - if (c) UDR0 = c; - // writing direct to UDR0 is much much faster than Serial.print - // but only one character can be written at a time. -#endif -} - -void useInterrupt(boolean v) { - if (v) { - // Timer0 is already used for millis() - we'll just interrupt somewhere - // in the middle and call the "Compare A" function above - OCR0A = 0xAF; - TIMSK0 |= _BV(OCIE0A); - usingInterrupt = true; - } else { - // do not call the interrupt function COMPA anymore - TIMSK0 &= ~_BV(OCIE0A); - usingInterrupt = false; - } -} - -uint32_t timer = millis(); -void loop() // run over and over again -{ - // in case you are not using the interrupt above, you'll - // need to 'hand query' the GPS, not suggested :( - if (! usingInterrupt) { - // read data from the GPS in the 'main loop' - char c = GPS.read(); - // if you want to debug, this is a good time to do it! - if (GPSECHO) - if (c) Serial.print(c); - } - - // if a sentence is received, we can check the checksum, parse it... - if (GPS.newNMEAreceived()) { - // a tricky thing here is if we print the NMEA sentence, or data - // we end up not listening and catching other sentences! - // so be very wary if using OUTPUT_ALLDATA and trytng to print out data - //Serial.println(GPS.lastNMEA()); // this also sets the newNMEAreceived() flag to false - - if (!GPS.parse(GPS.lastNMEA())) // this also sets the newNMEAreceived() flag to false - return; // we can fail to parse a sentence in which case we should just wait for another - } - - // if millis() or timer wraps around, we'll just reset it - if (timer > millis()) timer = millis(); - - // approximately every 2 seconds or so, print out the current stats - if (millis() - timer > 2000) { - timer = millis(); // reset the timer - - Serial.print("\nTime: "); - Serial.print(GPS.hour, DEC); 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); - if (GPS.fix) { - Serial.print("Location: "); - Serial.print(GPS.latitude, 4); Serial.print(GPS.lat); - Serial.print(", "); - Serial.print(GPS.longitude, 4); Serial.println(GPS.lon); - Serial.print("Location (in degrees, works with Google Maps): "); - Serial.print(GPS.latitudeDegrees, 4); - Serial.print(", "); - Serial.println(GPS.longitudeDegrees, 4); - - 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); - } - } -} diff --git a/examples/shield_sdlog/.due.test.skip b/examples/shield_sdlog/.due.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/shield_sdlog/.esp32.test.skip b/examples/shield_sdlog/.esp32.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/shield_sdlog/.esp8266.test.skip b/examples/shield_sdlog/.esp8266.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/shield_sdlog/.m4.test.skip b/examples/shield_sdlog/.m4.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/shield_sdlog/.zero.test.skip b/examples/shield_sdlog/.zero.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/examples/shield_sdlog/shield_sdlog.ino b/examples/shield_sdlog/shield_sdlog.ino index 222061f..7fbff8f 100644 --- a/examples/shield_sdlog/shield_sdlog.ino +++ b/examples/shield_sdlog/shield_sdlog.ino @@ -14,7 +14,7 @@ // Tested and works great with the Adafruit Ultimate GPS Shield // using MTK33x9 chipset // ------> http://www.adafruit.com/products/ -// Pick one up today at the Adafruit electronics shop +// Pick one up today at the Adafruit electronics shop // and help support open source hardware & software! -ada // Fllybob added 10 sec logging option SoftwareSerial mySerial(8, 7); @@ -24,12 +24,13 @@ Adafruit_GPS GPS(&mySerial); // Set to 'true' if you want to debug and listen to the raw GPS sentences #define GPSECHO true /* set to true to only log to SD when GPS has a fix, for debugging, keep it false */ -#define LOG_FIXONLY false +#define LOG_FIXONLY false // this keeps track of whether we're using the interrupt // off by default! +#ifndef ESP8266 // Sadly not on ESP8266 boolean usingInterrupt = false; -void useInterrupt(boolean); // Func prototype keeps Arduino 0023 happy +#endif // Set the pins used #define chipSelect 10 @@ -88,9 +89,7 @@ void setup() { // output, even if you don't use it: pinMode(10, OUTPUT); - // see if the card is present and can be initialized: - if (!SD.begin(chipSelect, 11, 12, 13)) { - //if (!SD.begin(chipSelect)) { // if you're using an UNO, you can use this line instead + if (!SD.begin(chipSelect)) { Serial.println("Card init. failed!"); error(2); } @@ -107,11 +106,11 @@ void setup() { logfile = SD.open(filename, FILE_WRITE); if( ! logfile ) { - Serial.print("Couldnt create "); + Serial.print("Couldnt create "); Serial.println(filename); error(3); } - Serial.print("Writing to "); + Serial.print("Writing to "); Serial.println(filename); // connect to the GPS at the desired rate @@ -132,21 +131,24 @@ void setup() { // the nice thing about this code is you can have a timer0 interrupt go off // every 1 millisecond, and read data from the GPS for you. that makes the // loop code a heck of a lot easier! +#ifndef ESP8266 // Not on ESP8266 useInterrupt(true); +#endif Serial.println("Ready!"); } // Interrupt is called once a millisecond, looks for any new GPS data, and stores it -SIGNAL(TIMER0_COMPA_vect) { +#ifndef ESP8266 // Not on ESP8266 +ISR(TIMER0_COMPA_vect) { char c = GPS.read(); // if you want to debug, this is a good time to do it! #ifdef UDR0 if (GPSECHO) - if (c) UDR0 = c; - // writing direct to UDR0 is much much faster than Serial.print - // but only one character can be written at a time. + if (c) UDR0 = c; + // writing direct to UDR0 is much much faster than Serial.print + // but only one character can be written at a time. #endif } @@ -157,13 +159,14 @@ void useInterrupt(boolean v) { OCR0A = 0xAF; TIMSK0 |= _BV(OCIE0A); usingInterrupt = true; - } + } else { // do not call the interrupt function COMPA anymore TIMSK0 &= ~_BV(OCIE0A); usingInterrupt = false; } } +#endif // ESP8266 void loop() { if (! usingInterrupt) { @@ -173,22 +176,22 @@ void loop() { if (GPSECHO) if (c) Serial.print(c); } - + // if a sentence is received, we can check the checksum, parse it... if (GPS.newNMEAreceived()) { // a tricky thing here is if we print the NMEA sentence, or data - // we end up not listening and catching other sentences! + // we end up not listening and catching other sentences! // so be very wary if using OUTPUT_ALLDATA and trying to print out data - - // Don't call lastNMEA more than once between parse calls! Calling lastNMEA + + // Don't call lastNMEA more than once between parse calls! Calling lastNMEA // will clear the received flag and can cause very subtle race conditions if // new data comes in before parse is called again. char *stringptr = GPS.lastNMEA(); - + if (!GPS.parse(stringptr)) // this also sets the newNMEAreceived() flag to false return; // we can fail to parse a sentence in which case we should just wait for another - // Sentence parsed! + // Sentence parsed! Serial.println("OK"); if (LOG_FIXONLY && !GPS.fix) { Serial.print("No Fix"); @@ -205,7 +208,3 @@ void loop() { Serial.println(); } } - - -/* End code */ -