Pic
shadow

Hoy vamos a ver un circuito muy sencillo con el que podremos conectar una tarjeta SD a Arduino.

Si quieres saber más sobre este tipo de tarjetas puedes consultar nuestro tutorial sobre tarjetas SD

Unicamente necesitamos cuatro pines para poder comunicarnos con la tarjeta, y alimentarla a 3.3V:

  • Protoboard Ampliar
    Esquema Ampliar
ResistenciasValor
R1,R3,R4,R5100
R2,R6,R7,R81k
R9,R10,R11,R122k2

Vamos a utilizar el código que viene como ejemplo en la librería de Arduino, esta totalmente comentado para sea fácil de entender:

	#include <SD.h>  
      
    File myFile;  
      
    void setup()  
    {  
     // Abrimos la comunicación serial  
      Serial.begin(9600);  
       while (!Serial) {  
        ; // Esperamos a que se abra la comunicación  
      }  
      
      
      Serial.print("Iniciando la tarjeta SD...");  
      // Vamos a usar el pin 10 como CS, así que tenemos que configurarlo como una salida.  
       pinMode(10, OUTPUT);  
         
      if (!SD.begin(4)) {  
        Serial.println("Fallo al inicializar!");  
        return;  
      }  
      Serial.println("Inicializacion completa.");  
        
      // Abrimos el fichero que nos interesa. Solo podemos tener un fichero abierto, así que si queremos cambiar de fichero  
      // antes tendremos que cerrar el anterior.  
      myFile = SD.open("test.txt", FILE_WRITE);  
        
      // Si el fichero se abre correctamente:  
      if (myFile) {  
        Serial.print("Escribiendo el test...");  
          
        //Escribimos en el fichero de la siguiente manera:  
        myFile.println("probando 1, 2, 3.");  
          
        // Cerramos el fichero  
        myFile.close();  
        Serial.println("done.");  
      
      } else {  
        // Si no se puede abrir el fichero, mostramos un mensaje de error  
        Serial.println("error al abrir el fichero test.txt");  
      }  
        
      // Volvemos a abrir el fichero para leerlo  
      myFile = SD.open("test.txt");  
      if (myFile) {  
        Serial.println("test.txt:");  
          
        // leemos los datos del fichero   
        while (myFile.available()) {  
            Serial.write(myFile.read());  
        }  
        // cerramos el fichero  
        myFile.close();  
      } else {  
        // Si el fichero no puede abrirse, mostramos un erro.  
        Serial.println("error opening test.txt");  
      }  
    }  
      
    void loop()  
    {  
          
    }  
	

Ya podemos dotar de memoria no volatil a nuestros proyectos. Con ello podemos almacenar imagenes, el log del estado, las lecturas que tomemos, guardar la configuración que hemos creado para evitar que se borre al retirar la alimentación.. un sin fin de cosas.