Vuelvo por aqui para solicitar de vuestra sabiduría...
En mi proyecto creo archivos de texto en diferentes carpetas, con la siguiente estructura...
ENTRENOS
... > AÑO
......> MES
..........> DIA
.............> HORA.txt
he visto ejemplos de como abrir un archivo concreto, pero me interesaría poder explorar las carpetas y seleccionar el archivo que yo quiera para poder ver el contenido, y mostrarlo en un display...
Conocéis algún ejemplo que pueda mirar para saber por donde me da el aire?? ando un poco perdido... y no encuentro nada con el oráculo google...
También puede que te interese esta otra función para saber si son directorios aunque pienso que usas un orden bastante regular y puede que no te haga falta.
Lo tienes todo en la clase SD.h. Ya nos contarás cómo te ha ido!
Gracias! Eso ya lo tenia mirado , y me viene bien para abrir un archivo en cuestion...
Pero para abrirlo debo saber la ruta exacta...
Mi plan es poder navegar por los directorios y ver los archivos de cada directorio en un lcd...y una vez visto el nombre del archivo,poder seleccionarlo y abrirlo para verlo linea a linea.
A ver si consigo ayudarte. He hecho este pequeño ejemplo, cutre pero espero que te sirva para entenderlo, que si lo cargas te sirve para listar todos los archivos que hay en un directorio. Con la función isDirectory() ves si es un directorio o un archivo. En tu programa si es un archivo al seleccionarlo debería abrirlo y si es un directorio pues imprimes todos los archivos de ese nuevo directorio. Para el asunto de la ruta puedes ir almacenando en una variable la ruta que has ido siguiendo al navegar, cada vez que entras en un directorio nuevo pues se lo añades a la ruta al final y listo!
#include <SD.h>
File root;
File archivo;
void setup()
{
Serial.begin(9600);
pinMode(10, OUTPUT);
if(SD.begin(10)){
Serial.println("Iniciado correctamente.");
}else{
Serial.println("Error al iniciar.");
}
root = SD.open("/");
do{
archivo = (root.openNextFile());
if(!archivo){
//Si no hay archivo siguiente
Serial.println("\n \n FIN");
}else{
Serial.print(archivo.name()); //Imprimo el nombre
if (archivo.isDirectory()){
//Si es un directorio
Serial.print("\t \t directorio");
}else{
//Si es un archivo
Serial.print("\t \t archivo");
}
Serial.print("\n");
}
}while(archivo);
}
void loop()
{
}
Ok! muchas gracias por el scketch y por la idea.. voy a estudiarla.. y ya comentare los resultados...
quiero mostrarlo en un LCD 2x16, así que tengo curro para hacerlo....