Esta tarjeta tiene el siguiente aspecto:
Además de tener la SD tiene un reloj, de ahí la pila. Sirve para tomar datos de sensores cada cierto tiempo y luego poder graficarlos.
El programa más básico que he hecho es un derivado del que viene con la librería SD modificado para que lea n entradas analógicas. En caso de tener entradas de sensores no analógicos la cosa es diferente y hay que fusionar ejemplos de librerías. No usaré el reloj en este primer ejemplo.
El código viene comentado:
/*
Ejemplo sencillo para manejo de la sd shield sin el reloj
*/
#include <SPI.h>
#include <SD.h>
int n=1; //número de sensores que tenemos conectados en orden A0 A1 A2 A3 A4 A5
const int chipSelect = 10; // para esta shield seleccionamos el 10
void setup() {
Serial.begin(9600); //en el setup se establece comunicación serial y se nos dice si se encuentra la tarjeta
while (!Serial) {
;
}
Serial.print(«Initializing SD card…»);
// see if the card is present and can be initialized:
if (!SD.begin(chipSelect)) {
Serial.println(«Card failed, or not present»);
// don’t do anything more:
return;
}
Serial.println(«card initialized.»);
}
void loop() {
String dataString = «»; // vamos a montar un string para ver los valores de las entradas A0 A1 y A2
for (int analogPin = 0; analogPin < n; analogPin++) {
int sensor = analogRead(analogPin);
dataString += String(sensor);
if (analogPin < (n-1)) {
dataString += «,»;
}
}
// open the file. note that only one file can be open at a time,
// so you have to close this one before opening another.
File dataFile = SD.open(«datalog.txt», FILE_WRITE);
// if the file is available, write to it:
if (dataFile) {
dataFile.println(dataString);
dataFile.close();
// print to the serial port too:
Serial.println(dataString);
delay (5000); // aqui ajustas el tiempo entre lecturas
}
// if the file isn’t open, pop up an error:
else {
Serial.println(«error opening datalog.txt»);
}
}
El programa inicializa la tarjeta y monta un array el tamaño que le hayamos dicho con la variable n. Abre un archivo con extensión txt, (podemos cambiar el nombre), e imprime en dicho archivo el array.
Lo mejor que podemos hacer con el archivo es cambiar la extensión a csv:
y luego abrirlo con openOffice, al importarlo nos da opción de separar en columnas los datos separados por comas:
en el ejemplo solo había un sensor, pero funciona sin problemas. Luego dibujas la gráfica y ya está: