system
6
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
String inputString = ""; // a string to hold incoming data
String test = "";
String ggaString = "";
String vtgString = "";
boolean stringComplete = false; // whether the string is complete
boolean gotGgaData = false;
boolean gotVtgData = false;
String utcTime = "";
float floatUtcTime=0;
String lat = "";
float floatLat=0;
String lng = "";
float floatLng=0;
void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
inputString.reserve(200);
}
void loop() {
if (stringComplete) {
inputString = "";
stringComplete = false;
}
if(gotGgaData==true)
{
gotGgaData=false;
utcTime=ggaString.substring(7,16);
lcd.print("Time : ");
lcd.print(utcTime);
delay(1000);
lcd.clear();
lat=ggaString.substring(18,27);
lcd.print("Lat : ");
lcd.print(lat);
delay(1000);
lcd.clear();
lng=ggaString.substring(31,40);
lcd.print("Lng : ");
lcd.print(lng);
delay(1000);
lcd.clear();
convert();
}
}
void convert()
{
test=lat;
int ddlat=0;
int mmlat=0;
int mmmmlat=0;
test=test.substring(0,2);
ddlat=test.toInt();
test=lat;
test=test.substring(2,4);
mmlat=test.toInt();
test=lat;
test=test.substring(5,9);
mmmmlat=test.toInt();
floatLat=(mmlat+(mmmmlat*0.0001));
floatLat=floatLat/60;
floatLat=floatLat+ddlat;
test=lng;
test=test.substring(0,2);
ddlat=test.toInt();
test=lng;
test=test.substring(2,4);
mmlat=test.toInt();
test=lng;
test=test.substring(5,9);
mmmmlat=test.toInt();
floatLng=(mmlat+(mmmmlat*0.0001));
floatLng=floatLng/60;
floatLng=floatLng+ddlat;
}
void serialEvent()
{
while (Serial.available())
{
char inChar = (char)Serial.read();
inputString += inChar;
if (inChar == '\n')
{
test=inputString.substring(0,6);
if(test=="$GPVTG")
{ vtgString=inputString; gotVtgData= true;}
else if(test=="$GPGGA")
{ ggaString=inputString; gotGgaData= true;}
stringComplete = true;
}
}
}