Arduino und CRIUS GPS Modul Fix Fehler

Hallo,

ich nutzen einen Arduino UNO, ein SD Karten Modul, ein CRIUS GPS Modul und folgenden Code:

#include <SoftwareSerial.h>
#include <SD.h>

SoftwareSerial gpsSerial(8, 9); // RX, TX (TX not used)
const int sentenceSize = 80;
const int chipSelect = 10;

unsigned long delaytime = 7000;

char sentence[sentenceSize];
char Str1[35];
int LATcheck1;
int LATcheck2;
int LONcheck1;
int LONcheck2;

char* FileName = "Log1.txt";

void setup()
{
  Serial.begin(9600);
  gpsSerial.begin(9600);

  Serial.print("SD card: ");
  pinMode(10, OUTPUT);
  //pinMode(7, OUTPUT);  
  //digitalWrite(7, HIGH);

  if (!SD.begin(chipSelect)) {
    Serial.println("SD Fail");
    delay(999999);
  }
  Serial.println("SD Okay");

  if (SD.exists(FileName)) {
    FileName = "Log2.txt";
  }
  if (SD.exists(FileName)) {
    FileName = "Log3.txt";
  }
  if (SD.exists(FileName)) {
    FileName = "Log4.txt";
  }
  if (SD.exists(FileName)) {
    FileName = "Log5.txt";
  }
  if (SD.exists(FileName)) {
    FileName = "Log6.txt";
  }
  if (SD.exists(FileName)) {
    FileName = "Log7.txt";
  }
  if (SD.exists(FileName)) {
    FileName = "Log8.txt";
  }
  if (SD.exists(FileName)) {
    FileName = "Log9.txt";
  }
  if (SD.exists(FileName)) {
    FileName = "Log10.txt";
  }
  if (SD.exists(FileName)) {
    FileName = "Log11.txt";
  }
  if (SD.exists(FileName)) {
    FileName = "Log12.txt";
  }
  if (SD.exists(FileName)) {
    FileName = "Log13.txt";
  }
  if (SD.exists(FileName)) {
    FileName = "Log14.txt";
  }
  if (SD.exists(FileName)) {
    FileName = "Log15.txt";
  }
  if (SD.exists(FileName)) {
    FileName = "LogX.txt";
  }

  Serial.print("File Name: ");
  Serial.println(FileName);
  Serial.print("Delay Time (ms): ");
  Serial.println(delaytime);
  //digitalWrite(7, LOW);
}

void loop()
{
  static int i = 0;
  if (gpsSerial.available())
  {
    char ch = gpsSerial.read();
    if (ch != '\n' && i < sentenceSize)
    {
      sentence[i] = ch;
      i++;
    }
    else
    {
      sentence[i] = '\0';
      i = 0;
      displayGPS();
    }
  }
}

void displayGPS()
{
  char FailCheck[20];
  char field[20];
  char Lfield[20];
  char LATfield2[20]="0000.00000";
  char Bfield[20];
  char LONfield2[20]="0000.00000";
  getField(field, 0);
  if (strcmp(field, "$GPRMC") == 0)
  {            
    getField(LATfield2, 3);  // number
    getField(Lfield, 4); // N/S
    getField(LONfield2, 5);  // number
    getField(Bfield, 6);  // E/W
    getField(FailCheck, 2);
    Serial.println(FailCheck);

    char LATfield1[]="00"; // Zuweisung von irgendwas mit 2 Zeichen und abschließendem Nullzeichen
    char LONfield1[]="000";
    strncpy(LATfield1,LATfield2,2); // Umkopieren der ersten 2 Zeichen
    strncpy(LONfield1,LONfield2,3); // Umkopieren der ersten 3 Zeichen

    char LATfield3[]="000000";
    char LONfield3[]="000000";
    strncpy(LATfield3,&LATfield2[2],6); // Umkopieren der ersten 6 Zeichen ab 2 Zeichen nach dem Anfang
    strncpy(LONfield3,&LONfield2[3],6); // Umkopieren der ersten 6 Zeichen ab 3 Zeichen nach dem Anfang

    File dataFile = SD.open(FileName, FILE_WRITE);
    if (dataFile)
    {
      if(strcmp (FailCheck, "V") == 0)
      { 
        //digitalWrite(7, HIGH);
        dataFile.println("No GPS Fix!");
      }
      else
      {
        //digitalWrite(7, LOW);
        dataFile.print(Lfield);
        dataFile.print(LATfield1);
        dataFile.print(" ");
        dataFile.print(LATfield3);
        dataFile.print(", ");

        dataFile.print(Bfield);
        dataFile.print(LONfield1);
        dataFile.print(" ");
        dataFile.println(LONfield3);
      }
      dataFile.close();
    }
    else
    {
      Serial.println("File Open Error");
    } 
    
    if(strcmp (FailCheck, "V") == 0)
    { 
      //digitalWrite(7, HIGH);
      Serial.println("No GPS Fix!"); 
    }
    else
    {
      //digitalWrite(7, LOW);
      Serial.print(Lfield);
      Serial.print(LATfield1);
      Serial.print(" ");
      Serial.print(LATfield3);
      Serial.print(", ");

      Serial.print(Bfield);
      Serial.print(LONfield1);
      Serial.print(" ");
      Serial.println(LONfield3);
    }
    delay(delaytime);
  }
}

void getField(char* buffer, int index)
{
  int sentencePos = 0;
  int fieldPos = 0;
  int commaCount = 0;
  while (sentencePos < sentenceSize)
  {
    if (sentence[sentencePos] == ',')
    {
      commaCount ++;
      sentencePos ++;
    }
    if (commaCount == index)
    {
      buffer[fieldPos] = sentence[sentencePos];
      fieldPos ++;
    }
    sentencePos ++;
  }
  buffer[fieldPos] = '\0';
}

Wenn ich den Serial Monitor aufrufe sollte ich bei vorhandenem GPS Fix die Koodrinaten erhalten, wenn nicht, sollte "No GPS Fix!" erscheinen.

Ab und zu erscheint auch "No GPS Fix!", doch manchmal auch

,
,, 00.000, ,N*53
, 0.0000

.

Gestern hat alles wunderbar funktioniert.
Habt ihr eine Idee, warum es jetzt nichtmehr geht?

Danke und Gruß

Der Fehler ist übrigens erst da, seitdem ich digitalWrite(7, HIGH); bei Fehlern hinzugefügt habe.
Das ganze zu //kommentieren hat den Fehler aber nicht gelöst...