Hola a todos: Estoy armando con Arduino Duo un GPS que guarde datos en la Micro SD.
Como primer condicion filtre por codigo para que solo se visualice la line $GPRMC.
Ahora quiero que eso se guarde en la Micro SD... pero me tira error! "Error Opening datalog.csv"
En otro programa que arme funciona bien el guardado en la Micro SD por lo que DEBO TENER UN ERROR EN ESTE CODIGO.
Lo que hace este codigo basicamente busca la "C" y la "," para saber que lo posterior es toda data de $GPRMC, a partir de ahi imprime toda la informacion y la va guardando en un datastring.. la impresion seguira ocurriendo hasta que encuentra el signo "$" dando referencia a la linea siguiente (que no corresponde a $GPRMC). Los resultados se muestran en la imagen.
#include <SPI.h>
#include <SD.h>
char character;
const int chipSelect = 4; /// mi ChiSelect para la MicroSD
void setup ()
{
Serial.begin(9600);
Serial1.begin(9600);
delay(15);
// Nos aseguramos que el chipselect de ethernet esta en salida
// para evitar problemas.
pinMode(10, OUTPUT);
// see if the card is present and can be initialized:
if (!SD.begin(chipSelect)) {Serial.println("Card failed, or not present");return;}// don't do anything more:
Serial.println("Card initialized.");
Serial.println("Starting...");
Serial.println("");
}
void loop()
{
buscaRMC();
}
void buscaRMC()
{
while (Serial1.available())
{
if(Serial1.read()=='C')
{ delay(2);
while (Serial1.available())
{ if (Serial1.read()==',')
{Serial.print("$GPRMC,");
imprimeRMC();
break;}
else {break;}
}
}
else {break;}
}
}
void imprimeRMC()
{
String dataString="";
dataString += "$GPMRC,";
while (Serial1.available())
{
character = Serial1.read();
if (character=='$')
{
File dataFile = SD.open("tMotionGPS.csv",FILE_WRITE);
delay(1500);
if (dataFile){dataFile.println(dataString); dataFile.close();Serial.println("ok!!.csv");}
else { Serial.println("Error opening datalog.csv");}
break;
}
else
{
Serial.print(character);
dataString += String(character);
}
}
}