Is there a way to add the file creation time or edit time using the SD library or some other means? For this purpose of this discussion assume a date time device is attached to the SPI interface.
Add to what? You can certainly write time and date values to the file itself, in any desired format.
@jremington Like one sees when using a computer to view a file list in a folder. There is file size, creation/ edit time, file type as displayed while using a laptops folder. Is there a way to add these fields to the file.
Here's a link to a previous thread on this subject. You want a "date time callback function".
https://forum.arduino.cc/t/file-creation-date-and-time-in-sd-card/336037/4
Here's an example using SD.h
//http://forum.arduino.cc/index.php?topic=348562.msg3298426;topicseen#msg3298426
#include <SPI.h>
#include <SD.h>
#include <Wire.h>
#include <RTClib.h>
File file; // test file
const uint8_t SD_CS = 10; // SD chip select
RTC_DS1307 RTC; // define the Real Time Clock object
char timestamp[30];
//------------------------------------------------------------------------------
// call back for file timestamps
void dateTime(uint16_t* date, uint16_t* time) {
DateTime now = RTC.now();
sprintf(timestamp, "%02d:%02d:%02d %2d/%2d/%2d \n", now.hour(),now.minute(),now.second(),now.month(),now.day(),now.year()-2000);
Serial.println("yy");
Serial.println(timestamp);
// return date using FAT_DATE macro to format fields
*date = FAT_DATE(now.year(), now.month(), now.day());
// return time using FAT_TIME macro to format fields
*time = FAT_TIME(now.hour(), now.minute(), now.second());
}
//------------------------------------------------------------------------------
void setup() {
Serial.begin(9600);
Wire.begin();
if (!RTC.begin()) {
Serial.println("RTC failed");
while(1);
};
// set date time callback function
SdFile::dateTimeCallback(dateTime);
DateTime now = RTC.now();
sprintf(timestamp, "%02d:%02d:%02d %2d/%2d/%2d \n", now.hour(),now.minute(),now.second(),now.month(),now.day(),now.year()-2000);
Serial.println("xx");
Serial.println(timestamp);
if (!SD.begin(SD_CS)) {
Serial.println("SD.begin failed");
while(1);
}
file = SD.open("TEST_SD.TXT", FILE_WRITE);
file.println("Testing 1,2,3...");
delay(5000);
file.close();
Serial.println("Done");
}
//------------------------------------------------------------------------------
void loop() {}
1 Like
Thanks!
This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.