вывод координат 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();
И еще ряд извращений. Никак не могу понять, почему это происходит. В целом, хотел бы иметь значения координат в виде глобальных переменных для дальнейшей работы с ними.
Вывод на дислей оч громоздкая процедура - может сделать обновление раз в секунду(или больше)???
Может стоит накапливать в буфер принимаемую строку и отправлять на обработку после приема символа возврата каретки?