Lista de archivos SD

Uso de la biblioteca SD para imprimir el directorio de archivos de la tarjeta SD

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