CanSat-India-Updated / Quectel_L89_Custom Parser Code / I2C / Parent Code_first draft
Parent Code_first draft
Raw
#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("--------------------------");
    }
  }
}