ciao a tutti, avrei bisogno del vs aiuto per risolvere il mio problema con adafruit ultimate gps logger e una board mega compatibile.
riassumo quello che ho fatto: gps shield montata sul mega, ponticello tra pin8 e RX1 e tra pin7 e TX1, come da istruzioni adafruit.
scaricato ultima versione libreria SD dal sito adafruit.
lo sketch prevede la lettura di alcuni sensori, e la scrittura su file TXT delle coordinate e dei rispettivi valori dei sensori.
tutto funziona se utilizzo un nome file costante, ovvero così:
logFile = SD.open ("logFile.txt", FILE_WRITE);
if (logFile) {
logFile.print(lat); logFile.print(sep);
logFile.print(lon); logFile.print(sep);
logFile.print(temp); logFile.print(sep);
logFile.print(umid); logFile.print(sep);
logFile.println(pressure);
logFile.close();
}
mentre se utilizzo una funzione esterna, per creare un nome che varia a seconda della data e dell'ora, non funziona. la funzione esterna (che tra l'altro usavo in un altro sketch, con arduino UNO, e funzionava benissimo) è la seguente:
void creaNomeFile()
{
if (data != "") // se riceve la stringa "data", allora creo il nome
{
String dataOra = (data.substring(4, 6) + data.substring(2, 4) + data.substring(0, 2) + "_"
+ ora.substring(0, 6) + ".txt" );
dataOra.toCharArray(nomeFile, 22);
}
Serial.print ("nome file: "); Serial.println (nomeFile);
}
in pratica la funzione crea un nome del tipo AAMMGG_HHMMSS.txt e funziona, dato che il Serial.println restituisce il nome corretto.
se ora sostituisco "logFile.txt" con nomeFile nel codice sopra, la variabile logFile assume sempre il valore 0, quindi non entra nell'if e non scrive niente sulla SD.
non riesco a capire il problema.
grazie in anticipo!