[RISOLTO] Problema di scrittura su schedina micro sd con arduino yun

Salve a tutti! Ho un problema con la scrittura di un file sulla schedina micro sd dell'arduino yun. Ho creato questo sketch che ogni 30 secondi mi scrive su un file che ho chiamato "esempio.txt" la stringa "ciao". Allego qui il codice:

#include <FileIO.h>

void setup() {
  Bridge.begin();
  FileSystem.begin();
}

void loop() {
 File myFile = FileSystem.open("/mnt/sd/arduino/www/esempio.txt", FILE_APPEND);
 if (myFile) {
   myFile.println("ciao");
   myFile.close();
   }
 delay(30000);
}

Il problema è che il file viene correttamente creato, la stringa "ciao" viene scritta ma lo fa solo una volta. Mi scrive scrive solo la prima volta anzichè ogni 30 secondi e poi non riesce più ad aprire il file. Se resetto l'arduino yun lo scrive ancora correttamente, andando a capo sul file, ma sempre e solo una volta. Dove sbaglio?

Premetto che non conosco lo Yun, ma se usi Bridge.begin() non dovresti includere la libreria Bridge?

smarzotto:
Salve a tutti!

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento: Regolamento

cyberhs:
Premetto che non conosco lo Yun, ma se usi Bridge.begin() non dovresti includere la libreria Bridge?

Ho provato ad includere la libreria <Bridge.h> al codice ma purtroppo non cambia nulla.

#include <FileIO.h>
#include <Bridge.h>

void setup() {
  Bridge.begin();
  FileSystem.begin();
}

void loop() {
 File myFile = FileSystem.open("/mnt/sd/arduino/www/esempio.txt", FILE_APPEND);
 if (myFile) {
   myFile.println("ciao");
   myFile.close();
   }
  delay(30000);
}

In teoria non dovrebbe essere necessaria, ho preso spunto dal seguente esempio riportato sul sito di arduino e qui non la usano: http://www.arduino.cc/en/Tutorial/YunDatalogger

Prova a spostare il myFile.close() prima del delay(30000).

cyberhs:
Prova a spostare il myFile.close() prima del delay(30000).

Ho provato ma niente, continua sempre a scrivermi correttamente la stringa solo la prima volta che viene avviato e poi non scrive più niente.

#include <FileIO.h>
#include <Bridge.h>

void setup() {
  Bridge.begin();
  FileSystem.begin();
}

void loop() {
 File myFile = FileSystem.open("/mnt/sd/arduino/www/esempio.txt", FILE_APPEND);
 if (myFile) {
   myFile.println("ciao");
   
   }
  myFile.close();
  delay(30000);
}

Non conosco YUN, ma qui il reference:

non scrive della APPEND, ma solo READ e WRITE ?!?
"FILE_WRITE: open the file for reading and writing, starting at the end of the file"

Nel tutorial invece di parla di FILE_APPEND

Anche il tutorial di Alfieri usa APPEND !?!?!

Nell'esempio di Alfieri però, in caso di errore/i lo segnala sulla seriale:

} else {
      Serial.println("error opening dati.log");

Risolto! è bastato aggiornare l'IDE. Io avevo la versione 1.6.2 e una volta aggiornato all'1.6.4 si è sistemato tutto.

nid69ita:
Non conosco YUN, ma qui il reference:
http://www.arduino.cc/en/Reference/YunFileIOOpen

non scrive della APPEND, ma solo READ e WRITE ?!?
"FILE_WRITE: open the file for reading and writing, starting at the end of the file"

Nel tutorial invece di parla di FILE_APPEND

Non ho idea del perchè nel reference non si faccia menzione di FILE_APPEND, però l'ho visto usare in svariati esempi sul web e posso confermare che funziona :slight_smile:

Grazie a tutti per l'aiuto!