#include <SoftwareSerial.h>
SoftwareSerial mySerial(8, 9); // mySerial(7,8) for teensy i.e. Tx pin at 7, Rx at 8
void setup() {
Serial.begin(9600);
mySerial.begin(9600);
}
void loop() {
while (mySerial.available()) {
String sentence = mySerial.readStringUntil('\n');
if (sentence.startsWith("$GIGSV")) {
Serial.print("IRNSS/NavIC SIGNALS: ");
Serial.println(sentence);
}
if (sentence.startsWith("$GNGGA")) {
Serial.println(sentence);
String parts[15];
int i = 0;
char * pch = strtok (sentence.c_str(),",");
while (pch != NULL) {
parts[i++] = pch;
pch = strtok (NULL, ",");
}
String Satellites = parts[7];
String altitude = parts[9];
String latitude_full = parts[2];
float latitude_float=latitude_full.toFloat();
int latitude_degrees=int((int)(latitude_float)/100);
float latitude_minutes=((latitude_float-(latitude_degrees*100.0))/60.0);
float latitude_converted=latitude_degrees + latitude_minutes;
String longitude_full = parts[4];
float longitude_float=longitude_full.toFloat();
int longitude_degrees=int((int)(longitude_float)/100);
float longitude_minutes=((longitude_float-(longitude_degrees*100.0))/60.0);
float longitude_converted=longitude_degrees + longitude_minutes;
String time = parts[1];
Serial.print("Satellites: ");
Serial.println(Satellites);
Serial.print("Altitude: ");
Serial.print(altitude);
Serial.println(" m");
Serial.print("Latitude: ");
if (parts[3]=="N"){
Serial.print(latitude_converted,4);
Serial.println(" N");
}
else if(parts[3]=="S"){
Serial.print(-1*latitude_converted,4);
Serial.println(" S");
}
Serial.print("Longitude: ");
if (parts[5]=="E"){
Serial.print(longitude_converted,4);
Serial.println(" E");
}
else if(parts[5]=="W"){
Serial.print(-1*longitude_converted,4);
Serial.println(" W");
}
Serial.print("Time: ");
Serial.print(time.substring(0,2));
Serial.print(":");
Serial.print(time.substring(2,4));
Serial.print(":");
Serial.println(time.substring(4,9));
IST(time);
Serial.println("-------------------------------");
}
}
}