A diferencia de la publicación de Abril, acá se muestra como integrar una tarjeta micro-SD para almacenar los datos medidos
Componentes
Diagrama de Conexión
Figura 1: Diagrama de conexión elaborado con Fritzing |
Foto Final
Figura 2: Foto del sensor de luz, tarjeta SD y reloj conectados a una placa Arduino |
Código de Lectura
#include <DS1302.h> //libreria rejoj
#include <SD.h> // libreria SD
//en MEGA
//Pines GND puenteados
//Pines +5 y +3.3 puenteados a 5v
//cs 53
//sck 52
//mosi 51
//miso 50
// en UNO
//
//CS - 10
//MOSI- 11,
//MISO -12,
//CLK - 13,
// declaracion existencia de un archivo
File dataFile;
// pines del reloj para ocupar la libreria
DS1302 rtc(2, 3, 4); //RST DAT CLK
void setup(){
// Configuracion de reloj inicial (hora Chile o UTC) (solo la primera vez)
// rtc.setDOW(SUNDAY); // Set Day-of-Week to FRIDAY
// rtc.setTime(19, 20, 0); // Set the time to 12:00:00 (24hr format)
rtc.setDate(15, 3, 2015);
//pines de led y switch funcionamiento
pinMode(6, OUTPUT);
pinMode(8, INPUT); // sets the digital pin as output
DS1302 rtc(2, 3, 4); //RST DAT CLK
rtc.halt(false);
rtc.writeProtect(false);
Serial.begin(9600);
pinMode(10, OUTPUT);
Serial.print("Iniciando SD card...");
pinMode(13, OUTPUT);
digitalWrite(10, HIGH);
if (!SD.begin(10)) {
Serial.println("Fallo comunicacion o no existe SD");
digitalWrite(10, HIGH);
return;
}
digitalWrite(10, LOW);
Serial.println("SD Iniciada.");
// limpiado de SD
if (SD.exists("datalog.txt")){
Serial.println("archivo existe, se borrara");
SD.remove("datalog.txt");
}
else{
Serial.println("el archivo no existe, se creara..");
}
// primera linea comentarios de los datos
dataFile = SD.open("datalog.txt", FILE WRITE);
if (dataFile) {
Serial.println("Escribiendo Informacion...");
dataFile.println(" % Python ready data");
dataFile.println(" % Fecha Hora A0 A1");
Serial.println("dia mes ano hora min sec A0 A1");
dataFile.close();
}
else {
Serial.println("error opening test.txt");
}
}
void loop(){
digitalWrite(6,LOW);
while ( digitalRead(8)== HIGH){
digitalWrite(6,HIGH);
// numero de sensores
String dataString = ""; // creacion string
//RELOJ obtencion de fecha y su agregado al string que se guardara en la fila
dataString+= ((rtc.getTime()).date);
dataString+=" ";
dataString+= ((rtc.getTime()).mon);
dataString+=" ";
dataString+= ((rtc.getTime()).year);
dataString+=" ";
dataString+= ((rtc.getTime()).hour);
dataString+=" ";
dataString+= ((rtc.getTime()).min);
dataString+=" ";
dataString+= ((rtc.getTime()).sec);
dataString+=" ";
// creacion de columnas,una para cada pin analogo y lectura de su valor
int sensor1 = analogRead(1);
int a1=(sensor1*(5.0/1023))*100;
dataString += String(a1);
dataFile = SD.open("datalog.txt", FILE WRITE);
if (dataFile) {
dataFile.println(dataString);
delay(1000);
dataFile.close();
Serial.println(dataString);
}
else {
Serial.println("Fallo comunicacion.txt");
Serial.println("Revise conecxion");
delay(1000);
}
}
}
Datos en Pantalla
Figura 3: Pantalla que muestra la lectura y almacenamiento de datos del tiempo y sensor luz. |