Robologs - Leer SD
Robologs - Leer SD
Robologs - Leer SD
net/2019/02/16/como-leer-y-escribir-en-una-tarjeta-sd-y-micro-sd-
con-arduino/
Conexiones
En la mayoría de placas Arduino las conexiones serán:
Arduino 5V – Módulo VCC
Arduino GND – Módulo GND
Arduino D11 – Módulo MISO
Arduino D12 – Módulo MOSI
Arduino D13 – Módulo SCK
Arduino D4 – Módulo CS
Leer un fichero
En este primer ejemplo buscaremos un archvo dentro de la tarjeta SD con el nombre
“fichero.txt” y mostramos su contenido por el monitor Serial del IDE de Arduino.
(Nota: quizá es muy obvio decirlo, pero antes de correr este programa tenemos que haber
creado un archivo llamado “fichero.txt” dentro de la tarjeta SD o nuestra Arduino no va a
tener nada para leer…)
01 #include <SD.h>
02
03 int pin_lector = 4; //Pin CS
04 File archivo; //Objeto file que nos servira para
05
06 void setup() {
07 Serial.begin(9600);
08 pinMode(pin_lector, OUTPUT);
09
10 //Inicializamos la tarjeta SD con la funcion SD.begin.
11 //Si todo funciona bien, nos devolvera un 'True'
12 bool val = SD.begin(pin_lector);
13
14 //Si no se ha podido inicializar la tarjeta, mostrar un error
15 if(not val)
16 Serial.println("No se ha podido inicializar la tarjeta SD");
17
18 //Si se ha inicializado correctamente, leemos el fichero
19 else
20 {
21 archivo = SD.open("fichero.txt", FILE_READ); //Abrimos el fichero
22
23 //Si no se ha podido abrir, mostramos un error
24 if(not archivo)
25 Serial.println("No se ha podido abrir el fichero");
26
27 //De lo contrario, leemos el fichero y mostramos su contenido
28 else
29 {
30 char c = archivo.read();
31 while(c != -1) //Leemos hasta el final
32 {
33 Serial.print(c);
34 c = archivo.read();
35
36 }
37 archivo.close(); //Es muy importante cerrar el archivo al final
38 }
39 }
40
41 }
42
43 void loop() {
44 //En este ejemplo no necesitamos el void loop
45 }
Si quisiéramos acceder a un archivo que estuviera dentro de una carpeta tendríamos
que pasarle todo el path a la función SD.open(). Es decir:
archivo = SD.open("carpeta/fichero.txt", FILE_READ);
Escribir en un fichero
También podemos escribir en un fichero. El siguiente programa buscará el “fichero.txt” y
escribirá un texto al final. Si no puede encontrar el archivo creará uno nuevo con este
nombre.
01 #include <SD.h>
02
03 int pin_lector = 4; //Pin CS
04 File archivo; //Objeto file que nos servira para
05
06 void setup() {
07 Serial.begin(9600);
08 pinMode(pin_lector, OUTPUT);
09
10 //Declaramos el string que escribiremos en el fichero
11 char texto[] = "Este es un texto de prueba";
12
13 //Inicializamos la tarjeta SD con la funcion SD.begin.
14 //Si todo funciona bien, nos devolvera un 'True'
15 bool val = SD.begin(pin_lector);
16
17 //Si no se ha podido inicializar la tarjeta, mostrar un error
18 if(not val)
19 Serial.println("No se ha podido inicializar la tarjeta SD");
20
21 //Si se ha inicializado correctamente, leemos el fichero
22 else
23 {
24 archivo = SD.open("fichero.txt", FILE_WRITE); //Abrimos el fichero
25
26 //Si no se ha podido abrir, mostramos un error
27 if(not archivo)
28 Serial.println("No se ha podido abrir el fichero");
29
30 //De lo contrario escribimos el texto
31 else
32 {
33 archivo.println(texto);
34 archivo.close(); //Es muy importante cerrar el archivo al final
35 }
36 }
37 }
38
39 void loop()
40 {
41 //En este ejemplo no necesitamos el void loop
42 }
Destruir un fichero
La librería SD también nos permite destruir ficheros con la función SD.remove. Este
ejemplo buscará el archivo que hemos utilizado en los ejemplos anteriores y, si lo
encuentra, lo eliminará.
01 #include <SD.h>
02
03 int pin_lector = 4; //Pin CS
04
05 void setup() {
06 Serial.begin(9600);
07 pinMode(pin_lector, OUTPUT);
08
09 //Inicializamos la tarjeta SD con la funcion SD.begin.
10 //Si todo funciona bien, nos devolvera un 'True'
11 bool val = SD.begin(pin_lector);
12
13 //Si no se ha podido inicializar la tarjeta, mostrar un error
14 if(not val)
15 Serial.println("No se ha podido inicializar la tarjeta SD");
16
17 //Si se ha inicializado correctamente procedemos a borrar el fichero
18 else
19 {
20 //Comprobamos si el fichero existe
21 if(SD.exists("fichero.txt"))
22 {
23 SD.remove("fichero.txt"); //Eliminamos el fichero
24 Serial.println("Fichero eliminado");
25 }
26
27 else
28 Serial.println("No se ha encontrado el fichero");
29 }
30
31 }
32
33 void loop() {
34 //En este ejemplo no necesitamos el void loop
35 }
Estos son los usos más básicos de la librería SD, pero nos permite hacer muchas otras
cosas: listar todos los ficheros, mostrar información sobre la tarjeta SD… todas estas
funcionalidades pueden encontrarse en la documentación de la página de Arduino.