Leer datos en SD con Arduino (Módulo MicroSD y Ethernet Shield)

En esta nueva entrada voy a mostrar un sencillo código para leer con Arduino datos de un fichero txt que se encuentre en una tarjeta SD.

Leer archivo de SD

Para ello he utilizado los mismos módulos que en la entrada anterior: Escribir datos en una tarjeta SD con Arduino.

Las conexiones también serán las mismas:

· Para el módulo ethernet solo es necesario encajarlo correctamente sobre la placa Arduino y conectar el potenciómetro al Pin analógico 0.

· En el caso del módulo MICRO SD CARD Adapter es necesario hacer las siguientes conexiones:

- MOSI –> Pin 11 (La mayoría de las placas Arduino), para Arduino Mega: 51
– MISO –> Pin 12 (La mayoría de las placas Arduino), para Arduino Mega: 50
– CLK —-> Pin 13 (La mayoría de las placas Arduino), para Arduino Mega: 52
– CS ——> Pin 4
– 5V ——> 5V
– GND –> GND

Más información en http://arduino.cc/en/Reference/SPI

El código siguiente lee un archivo “leeme.txt” que tendremos que crear previamente en la tarjeta SD y envía su contenido por medio del puerto serie:

// Leer datos de SD con Arduino http://zygzax.com/
 
//Incluimos la libreria SD.
#include <SD.h>
// Guardamos en que entrada de arduino esta conectado el pin CS del modulo.
const int chipSelect = 4;
 
void setup(){
  // Configuramos el puerto serie para informar de fallos a traves de el.
  Serial.begin(9600);
 
  // El pin CS por defecto de la placa arduino debe ser configurado como salida
  // aunque no se use (10 en la mayoria de las placas, 53 en Arduino Mega).
  pinMode(10, OUTPUT);
 
  // Si ha habido error al leer la tarjeta informamos por el puerto serie.
  if (!SD.begin(chipSelect)){
    Serial.println("Error al leer la tarjeta.");
    return;
  }
  
  //Escribimos el programa dentro del setup para que solo se ejecute una vez.
  
  // Abrimos el archivo.
  File dataFile = SD.open("leeme.txt");
  // Si lo hemos podido abrir correctamente:
  if (dataFile) {
    // Mostramos un aviso de comienzo del txt
    Serial.println("* A continuacion se muestra el contenido de leeme.txt:");
    // Mandamos sus datos por el puerto serie.
    while (dataFile.available()) {
      Serial.write(dataFile.read());
    }
    // Cerramos el archivo.
    dataFile.close();
  // Si no hemos conseguido abrir el archivo mandamos un error.
  }else {
    Serial.println("Error al abrir leeme.txt");
  }
}

//No escribimos nada dentro del loop.
void loop()
{
}

Fuentes: Arduino SD Library