67 lines
1.7 KiB
C++
67 lines
1.7 KiB
C++
#include <TinyGPS++.h>
|
|
#include <SoftwareSerial.h>
|
|
|
|
#define BUFFER_SIZE 256
|
|
#define SERIAL_TX_PIN 4
|
|
#define SERIAL_RX_PIN 5
|
|
|
|
TinyGPSPlus gps;
|
|
SoftwareSerial serialGPS(SERIAL_RX_PIN, SERIAL_TX_PIN);
|
|
|
|
void setup() {
|
|
Serial.begin(9600);
|
|
while (!Serial) {
|
|
; // wait for serial port to connect. Needed for native USB port only
|
|
}
|
|
|
|
serialGPS.begin(9600);
|
|
//serialGPS.begin(115200);
|
|
}
|
|
|
|
void loop() {
|
|
//Serial.println("Running loop...");
|
|
while (serialGPS.available() > 0) {
|
|
//Serial.println("GPS data available");
|
|
if (gps.encode(serialGPS.read())) {
|
|
//Serial.println("GPS data read");
|
|
if (gps.location.isValid()) {
|
|
//Serial.println("GPS location valid");
|
|
float latitude = gps.location.lat();
|
|
String latitudeStr = String(latitude , 6);
|
|
float longitude = gps.location.lng();
|
|
String longitudeStr = String(longitude , 6);
|
|
|
|
Serial.print("Lat: ");
|
|
Serial.print(latitudeStr);
|
|
Serial.print(" Lon: ");
|
|
Serial.println(longitudeStr);
|
|
}
|
|
|
|
if (gps.date.isValid()) {
|
|
Serial.print("Date: ");
|
|
Serial.print(gps.date.year());
|
|
Serial.print("/");
|
|
Serial.print(gps.date.month());
|
|
Serial.print("/");
|
|
Serial.println(gps.date.day());
|
|
}
|
|
|
|
if (gps.time.isValid()) {
|
|
Serial.print("Time: ");
|
|
Serial.print(gps.time.hour());
|
|
Serial.print(":");
|
|
Serial.print(gps.time.minute());
|
|
Serial.print(":");
|
|
Serial.println(gps.time.second());
|
|
}
|
|
|
|
if (gps.location.isValid()
|
|
&& gps.date.isValid()
|
|
&& gps.time.isValid()) {
|
|
Serial.println("location, date and time are valid");
|
|
}
|
|
}
|
|
}
|
|
delay(500);
|
|
}
|