#include #include #include #include const int chipSelect = 10; bool newData = false; unsigned long chars; unsigned short sentences, failed; float flat, flon; char c; TinyGPS gps; SoftwareSerial ss(6, 7); //(TX,RX) void setup() { pinMode(LED_BUILTIN, OUTPUT); Serial.begin(9600); ss.begin(9600); Serial.print("GPS library v. "); Serial.println(TinyGPS::library_version()); while (!Serial) { ; // wait for serial port to connect. Needed for native USB port only } Serial.print("SD library..."); if (!SD.begin(chipSelect)) { Serial.println("Card failed, or not present"); return; } Serial.println("Card initialized."); } void loop() { // This sketch displays information every time a new sentence is correctly encoded. while (ss.available() > 0) { if (gps.encode(ss.read())) { displayInfo(); } } digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) delay(100); // wait for a second digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW delay(100); // wait for a second } void displayInfo() { String dataString = ""; unsigned long age; Serial.print(("Location: ")); gps.f_get_position(&flat, &flon, &age); flat == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 : flat, 6; flat == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 : flat, 6; dataString += String(flat); dataString += ","; dataString += String(flon); File dataFile = SD.open("datalog.txt", FILE_WRITE); if (dataFile) { dataFile.println(dataString); dataFile.close(); Serial.println(dataString); } else { Serial.println("error opening datalog.txt"); } }