Este ejemplo muestra cómo listar los archivos disponibles en el directorio de la tarjeta SD.
Hardware necesario
Placa Arduino o Genuino
Escudo de Ethernet (u otra placa con una ranura SD)
Tarjeta SD formateada
Circuito
La placa Arduino o Genuino tiene que estar conectada al escudo Ethernet y también tiene un cable USB conectado al ordenador.
Código
El código de abajo está configurado para su uso con un escudo de Ethernet, que tenga una ranura de SD incorporada. En setup (), SD.begin () nombra al pin 4 como el pin CS. Este pin varía dependiendo de la marca del escudo o placa que esté utilizando.
El bucle loop() no hace nada porque la función que imprime el directorio de archivos "/" de la tarjeta SD se llama desde el setup (). Esto es porque necesitamos verlo sólo una vez.
La función printDirectory explora a través de la lista de entradas e imprime en el monitor serie cada archivo y directorio actual. Para los archivos también imprime el tamaño.
// Lista archivos // Este ejemplo muestra cómo imprimir los archivos de una agenda // en una tarjeta SD. // Circuito: // * Tarjeta SD conectada al bus SPI de la siguiente manera: // ** MOSI - pin 11 // ** MISO - pin12 // ** CLK - pin 13 // ** CS - pin 4 // creado en Noviembre de 2010 por David A. Mellis // modificado el 9 Abril de 2012 por Tom Igoe // modificado el 2 Febrero de 2014 por Scott Fitzgerald // Este código es de dominio público. #include <SPI.h> #include <SD.h> File root; void setup() { // Abrir las comunicaciones serie y esperar a que se abra el puerto: Serial.begin(9600); while (!Serial) { ; // espera a que el puerto serie se conecte. Necesario para el puerto USB nativo solamente } Serial.print("Inicializando la tarjeta SD..."); if (!SD.begin(4)) { Serial.println("Fallo de inicializacion!"); return; } Serial.println("Inicializacion terminada."); root = SD.open("/"); printDirectory(root, 0); Serial.println("Terminado!"); } void loop() { // no pasa nada después de finalizada la instalación. } void printDirectory(File dir, int numTabs) { while (true) { File entry = dir.openNextFile(); if (! entry) { // no hay mas archivos break; } for (uint8_t i = 0; i < numTabs; i++) { Serial.print('\t'); } Serial.print(entry.name()); if (entry.isDirectory()) { Serial.println("/"); printDirectory(entry, numTabs + 1); } else { // los archivos tienen tamaño, los directorios no Serial.print("\t\t"); Serial.println(entry.size(), DEC); } entry.close(); } }
No hay comentarios:
Publicar un comentario