Tengo un problema, uso una función para guardar el valor de un int en la SD y otra función para recuperar su valor, pero si guardo 9999, y luego guardo 12, al leer el valor guardado, recupero 1299, es decír, quiero borrar el archivo antes de escribir de nuevo y no lo consigo, ni con SD.remove, ni con O_TRUNC. Pego el código. ¿Alguien tiene alguna sugerencia? me he leído todo lo que aparece en el foro de SD y no encuentro ninguna solución...
#include <SPI.h>
#include <SD.h>
File myFile;
int temp;
void setup() {
Serial.begin(9600);
Serial.print("Iniciando SD");
pinMode(4, OUTPUT);
if (!SD.begin(4)) {Serial.print("Fallo de SD");}
escribirtiempo(12);
Serial.print(leertiempo());
}
void loop() {}
int leertiempo(){
int entero=1; //Si empiezo en 0, me falta 1, así que si empiezo con 1 más
myFile = SD.open("horas.txt"); //abrir Archivo
int i=myFile.size()-1; // Guardo tamaño del número guardado en la memoria para ser el exponente de 10 (calcular su valor en función de su posición) por eso el -1
if (myFile) {
while (myFile.available()){ //Leo hasta el final
entero=entero+((myFile.read()-'0')*pow(10,i)); // Entero es igual a lo anterior más 10^i
i--;}} //por cada caracter que leo i vale una posición menos. (leo de izquierda a derecha)
myFile.close(); //Cierro archivo
return entero; //Devuelvo el valor
}
void escribirtiempo(int tiempo){
SD.remove("horas.txt"); //Borro el anterior
myFile = SD.open("horas.txt", FILE_WRITE); //Creo el archivo
//myFile = SD.open("horas.txt", O_TRUNC); //Supuesta manera de truncar el archivo para empezar con 0, tambien la he probado.
// if the file opened okay, write to it:
if (myFile) {
//myFile.seek(0); //Posición 0
myFile.print(tiempo, DEC);//guardo tiempo
myFile.close();//Cierro archivo
}
}