Hi every one, i'm not very experienced using arduino.
I want to develop a datalogger that creates a new log file every day and saves it on a 32Gb SD card, i'm using an arduino mega2560 + ethernet shield, SdFat-beta library, a RTC and Timer library. i've already made that the log file name corresponds to the current date (DDMMYYY) and i leave mi code below...Hope you can help me, greetings to all!
#include <SPI.h>
#include "SdFat.h"
#include "RTClib.h"
#include <Wire.h>
File file;
int SD_CS= 4;
RTC_DS1307 RTC;
String file_name= "";
char fn[]= "MMDDYYYY.csv";
int i=0;
SdFat SD;
int current_day=0;
int new_day=0;
void dateTime(uint16_t* date,uint16_t* time)
{
//RTC.adjust(DateTime(__DATE__,__TIME__));
DateTime now= RTC.now();
*date= FAT_DATE(now.year(), now.month(), now.day());
*time= FAT_DATE(now.hour(), now.minute(), now.second());
}
void setup()
{
Serial.begin (9600);
Wire.begin();
RTC.begin();
SdFile::dateTimeCallback(dateTime);
if (!SD.begin(SD_CS))
{
Serial.println("Error SD card");
return;
}
Serial.println ("SD card Ready!");
RTC.adjust(DateTime(F(__DATE__), F(__TIME__)));
//RTC.adjust(DateTime(__DATE__,__TIME__));
DateTime now = RTC.now();
// file_name = String(file_name +String(now.day(), DEC)+ String);
if (now.day() < 10) {
file_name = String(file_name + '0' + String(now.day(), DEC));
}
else {
file_name = String(file_name +String(now.day(), DEC));
}
if (now.month() < 10) {
file_name = String(file_name + '0' + String(now.month(), DEC));
}
else {
file_name = String(file_name +String(now.month(), DEC));
}
file_name= String(file_name+String(now.year(),DEC));
/*if (now.hour() < 10) {
file_name = String(file_name + '0' + String(now.hour(), DEC));
}
else {
file_name = String(file_name +String(now.hour(), DEC));
}
if (now.minute() < 10) {
file_name = String(file_name + '0' + String(now.minute(), DEC));
}
else {
file_name = String(file_name +String(now.minute(), DEC));
}*/
file_name = String(file_name + ".csv");
for (i=0;i<=file_name.length();i++) {
fn[i] = file_name.charAt(i);
// Serial.print(file_name.charAt(i));
}
Serial.print("File Name: ");
Serial.println(fn);
}
void loop()
{
//RTC.adjust(DateTime(__DATE__,__TIME__));
DateTime now= RTC.now();
String data_string = "";
if (now.day() < 10) {
data_string = String(data_string + '0' + String(now.day(), DEC));
}
else {
data_string = String(data_string +String(now.day(), DEC));
}
data_string += "/";
if (now.month() < 10) {
data_string = String(data_string + '0' + String(now.month(), DEC));
}
else {
data_string = String(data_string +String(now.month(), DEC));
}
data_string += "/";
data_string = String(data_string)+ String(now.year(), DEC);
data_string += " ";
if (now.hour() < 10) {
data_string = String(data_string + '0' + String(now.hour(), DEC));
}
else {
data_string = String(data_string +String(now.hour(), DEC));
}
data_string += ":";
if (now.minute() < 10) {
data_string = String(data_string + '0' + String(now.minute(), DEC));
}
else {
data_string = String(data_string +String(now.minute(), DEC));
}
data_string += ":";
if (now.second() < 10) {
data_string = String(data_string + '0' + String(now.second(), DEC));
}
else {
data_string = String(data_string +String(now.second(), DEC));
}
data_string += ",";
for (int analogPin = 0; analogPin < 16; analogPin++)
{
int sensor = analogRead(analogPin);
data_string += String(sensor);
if (analogPin < 15) {
data_string += ",";
}
}
//current_day= String(now.day(),DEC);
file= SD.open(fn,O_CREAT | O_WRITE | O_APPEND);
if(file)
{
file.println(data_string);
file.flush();
file.close();
Serial.println(data_string);
}
else
{
Serial.println("Error");
Serial.println(fn);
}
delay(5000);
}