У вас большая проблема, вы никогда не получите данные от вашего объекта GPS в свои переменные. Выполните следующие действия:
// create variable for latitude and longitude object
double lat = 0; // The lib defines it as double!
double lon = 0; // The lib defines it as double!
unsigned long lastGpsCheck = 0;
const unsigned long delayTime = 1000;
....
void loop(){
// Replaces the CPU stopping delay, does the same without blocking
if(millis() - lastGpsCheck > delayTime) {
lat = gps.location.lat(); // This is missing in your code
lon = gps.location.lon(); // This is missing in your code
Serial.println( lat,6 );
Serial.print(";");
Serial.print(lon,6 );
lastGpsCkeck = millis();
}
}
Примечание: я заменил задержку, рано научился никогда не использовать задержку в l oop, подпрограммах или библиотеках. Это нормально в настройке для ожидания инициализации оборудования или в качестве временной справки по отладке.
Избегайте преобразования в класс String. Всегда используйте фиксированные массивы. Класс String имеет плохой уровень памяти mgmt и ломает вашу кучу (утечки памяти -> cra sh), массивы исправлений скомпилированы в fla sh.