Estoy aprendiendo a escribir con arduino en una micro SD, utilizo la librería SD. El código (simplificado) es:
#include <SD.h>
File logFile;
void setup(){
if (!SD.begin(9)){
Serial.println(F("Error al iniciar"));
return;
}
}
void loop(){
logFile = SD.open("archivo.txt", FILE_WRITE);
if (logFile) {
logFile.println("texto a guardar");
logFile.close();
}
delay(1000);
}
El código funciona pero en una de las pruebas al sacar la tarjeta para ver qué se había escrito, se cargó la tarjeta (he probado de todo con windows y linux y está muerta). Supongo que pasaría lo mismo si se va la corriente.
Hola, quizas el delay es muy corto, es casi como que continuamente estubiera escribiendo. No se te ocurrio poner un led, para como en la pc, indique que se esta escribiendo. El delay lo haria mas largo para que te de tiempo para sacarlo. Saludos
¿Y el completo? El "simplificado" no me dice mucho del problema.
jomaiz:
al sacar la tarjeta para ver qué se había escrito, se cargó la tarjeta (he probado de todo con windows y linux y está muerta). Supongo que pasaría lo mismo si se va la corriente.
¿Seguro que está dañada del todo? ¿No será más bien que la partición es la que se haya dañado?
En Windows, verifca en el Administrador de Discos; en Linux, verifica con la Utilidad de Discos o GParted.
El que quedara inservible apenas en el primer maltrato, debió ser ya cosas del destino. No hablo en sentido figurado, en efecto estoy diciendo que seguro la tarjeta ya estaba en las últimas, qué se yo...
jomaiz:
¿Hay alguna forma de evitarlo?
Según lo que había leído en no sé dónde, el momento más seguro para retirar/apagar una tarjeta SD, es cuando está en estado de inactiviadad; el cuál se llega a dar un segundo después de la última interacción.
Cuando en código haya transcurrido un segundo sin hacer nada con la tarjeta, ahí es dónde se puede retirar o apagar con seguridad.
La tarjeta está parar tirar, lo he intentado con Administrador de discos, Gparted y una herramienta de la power shell (no recuerdo el nombre).
Destino o no no tengo ganas de probar con más tarjetas, así que mandaré los datos de los sensores por red local a mi raspberry y allí los guardaré en disco o en BBDD.
Ahora se me ocurre que intentaras el ejemplo de un sketch que formatea tarjetas SD como lo haría SD Card Formatter; solo que está disponible en SdFat y no en la libraría de la IDE.
Lucario448:
Ahora se me ocurre que intentaras el ejemplo de un sketch que formatea tarjetas SD como lo haría SD Card Formatter
Ya he probado y nada, debe estar bien frita, ya descansa en la basura:
SD initialization failure!
Is the SD card inserted correctly?
Is chip select correct at the top of this program?
error: card.begin failed
SD error: 20,ff