Go Down

Topic: error temp datalogger, saving on SD card (Read 85 times) previous topic - next topic

juanedo

Jun 16, 2019, 02:01 am Last Edit: Jun 16, 2019, 02:34 am by juanedo
hello, I have a problem, I'm making a datalogger for the temperature, however, when saving the data in the SD these are not saved, I create a file but without containing data in it.

i need help please!


Code: [Select]


#include <OneWire.h>
#include <virtuabotixRTC.h>      // Incluye la librería reloj
#include <Wire.h>                //incluye la libreria comunicacion 1 wire
#include <DallasTemperature.h> // incluye libreria sensor temperatura
#include <SD.h>
#include <SPI.h>
#define PIN 3 //pin digital conectado a S ky001


virtuabotixRTC myRTC(5, 6, 7);   // Define los pines de CLK, DAT y RST en ese
 //orden y nombra al RTC "myRTC" para llamarlo de esa manera luego


File archivo;
OneWire ourWire (PIN);
DallasTemperature sensors (&ourWire);

int datos[7];
float temp[1];
int min_ant;
int min_new;

void setup() {
Serial.begin(9600);
Serial.println("iniciando.......");
Serial.println("Fecha,Hora,Temperatura");
SD.begin(4);//inicia sd
delay(2000);
archivo = SD.open("datalog.txt",FILE_WRITE);
delay(2000);
archivo.println("Fecha,Hora,Temperatura");
delay(2000);
archivo.close();
min_ant=0;
}

void loop() {
myRTC.updateTime();
min_new=myRTC.minutes;

 if(min_ant!=min_new){
  fecha_hora();       //llamado funcion fecha_hora, llena el vector
  temperatura();      //llamado funcion temp, llena el vector
  guarda_datos();     //guarda datos
  imprime_serie();    //muestra por puerto serie el array
  min_ant=min_new;
  archivo.flush();

 }



}

  void fecha_hora(){
    myRTC.updateTime();
    datos[0]=myRTC.dayofmonth;
    datos[1]=myRTC.month;
    datos[2]=myRTC.year;
    datos[3]=myRTC.hours;
    datos[4]=myRTC.minutes;
    datos[5]=myRTC.seconds;
    }
  void temperatura(){
    sensors.requestTemperatures ();
    temp[0]=sensors.getTempCByIndex(0);
    }
  void imprime_serie(){
    Serial.print(datos[0]);
    Serial.print("/");
    Serial.print(datos[1]);
    Serial.print("/");
    Serial.print(datos[2]);
    Serial.print(",");
    Serial.print(datos[3]);
    Serial.print(":");
    Serial.print(datos[4]);
    Serial.print(":");
    Serial.print(datos[5]);
    Serial.print(",");
    Serial.println(temp[0]);
    }
  void guarda_datos(){
    SD.begin(4);//inicia sd
    delay(2000);
    archivo = SD.open("datalog.txt",FILE_WRITE);
    delay(2000);
    archivo.print(datos[0]);
    archivo.print("/");
    archivo.print(datos[1]);
    archivo.print("/");
    archivo.print(datos[2]);
    archivo.print(",");
    archivo.print(datos[3]);
    archivo.print(":");
    archivo.print(datos[4]);
    archivo.print(":");
    archivo.print(datos[5]);
    archivo.print(",");
    archivo.println(temp[0]);
    delay(2000);
    archivo.close();
   
    delay(5000);
  }
   







groundFungus

Read the how to use the forum-please read stickies (in bold at the top of each page) for advice on what information that we need to be able to help you.
You will save everyone's time if you read and follow the forum guidelines.  https://forum.arduino.cc/index.php/topic,148850.0.html

Go Up