#include <I2C.h>
#include <SoftwareSerial.h>
#include <Wire.h>
const int L89_I2C_ADDR = 0x3A;
void setup() {
Wire.begin();
}
void loop() {
Wire.beginTransmission(L89_I2C_ADDR);
Wire.write(0x01); // register address
Wire.endTransmission();
Wire.requestFrom(L89_I2C_ADDR, 1);
while (Wire.available()) {
String sentence = Wire.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 numSatellites = 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(numSatellites);
Serial.print("Altitude: ");
Serial.print(altitude);
Serial.println(" m");
Serial.print("Latitude: ");
if (parts[3]=="N"){
Serial.print(latitude_converted);
Serial.println(" N");
}
else if(parts[3]=="S"){
Serial.print(-1*latitude_converted);
Serial.println(" S");
}
Serial.print("Longitude: ");
if (parts[5]=="E"){
Serial.print(longitude_converted);
Serial.println(" E");
}
else if(parts[5]=="W"){
Serial.print(-1*longitude_converted);
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("--------------------------");
}
}
}