вывод координат GPS на экран
- Войдите на сайт для отправки комментариев
Доброго времени суток.
Пытаюсь вывести на экран значения координат (double). Собственно, сам код
#include <TinyGPS++.h> #include <SoftwareSerial.h> static const int RXPin = 10, TXPin = 11; static const uint32_t GPSBaud = 9600; TinyGPSPlus gps; SoftwareSerial ss(RXPin, TXPin); //работа с gps модулем #include <tinyFAT.h> #include <UTFT.h> #include <UTFT_tinyFAT.h> //подключение библиотек экрана и работы с SD для экрана extern uint8_t SmallFont[]; extern uint8_t BigFont[]; extern uint8_t SevenSegNumFont[]; //объявление встроенных шрифтов UTFT myGLCD(R61581, 38, 39, 40, 41); //инициализация экрана UTFT_tinyFAT myFiles(&myGLCD); //создание объекта экрана void setup() { Serial.begin(115200); myGLCD.InitLCD(LANDSCAPE); //ориентация экрана myGLCD.clrScr(); //очистка экрана file.initFAT(); //?? ss.begin(GPSBaud); //запуск gps модуля } void loop() { while (ss.available() > 0) if (gps.encode(ss.read())) displayInfo(); } void displayInfo() { /* myGLCD.setFont(SmallFont); myGLCD.setBackColor(5, 53, 5); myGLCD.setColor(255, 255, 255); myGLCD.print("koordinaty i vremya", 5, 5); */ Serial.print("Location: "); if (gps.location.isValid()) { Serial.print(gps.location.lat(), 6); Serial.print(","); Serial.print(gps.location.lng(), 6); } else { Serial.print("INVALID"); } Serial.print(" Date/Time: "); if (gps.date.isValid()) { Serial.print(gps.date.month()); Serial.print("/"); Serial.print(gps.date.day()); Serial.print("/"); Serial.print(gps.date.year()); } else { Serial.print("INVALID"); } Serial.println(); }
Стандартные примеры из библиотек для модуля работают отлично. Но при попытке хоть что-то (например, то что в скобках /*...*/) вписать в void displayInfo(), ардуино перестает считывать значения с модуля. Все приравниваеся к нулю. Читал на форумах, что недопустима задержка (delay и т.п.). Но ее и нет. Что уже не пробовал:
менять Serial.print(gps.date.month()); на myGLCD.printNumF(gps.location.lng(), 6, 50,50);
загружать значение в глобальную переменную типа double A = gps.location.lng();
И еще ряд извращений. Никак не могу понять, почему это происходит. В целом, хотел бы иметь значения координат в виде глобальных переменных для дальнейшей работы с ними.
Вывод на дислей оч громоздкая процедура - может сделать обновление раз в секунду(или больше)???
Может стоит накапливать в буфер принимаемую строку и отправлять на обработку после приема символа возврата каретки?