From 9987a1693de3f550b703e394b872450f0b8ff9ee Mon Sep 17 00:00:00 2001 From: Fisch Date: Sun, 19 Jun 2022 19:41:19 +0200 Subject: [PATCH] add incremental logfile naming --- hoverbrettctrl/src/main.cpp | 68 +++++++++++++++++++++++++++++++++---- 1 file changed, 62 insertions(+), 6 deletions(-) diff --git a/hoverbrettctrl/src/main.cpp b/hoverbrettctrl/src/main.cpp index cecf789..5e694d8 100644 --- a/hoverbrettctrl/src/main.cpp +++ b/hoverbrettctrl/src/main.cpp @@ -192,6 +192,7 @@ uint8_t controlmode=0; #include //Format sd cart with FAT or FAT16 #define SDCHIPSELECT 16 boolean datalogging=true; +String datalogging_filename="UNKNOWN.txt"; void updateInputs(unsigned long loopmillis); @@ -201,6 +202,8 @@ void display_show_stats2(); void display_show_stats3(); void display_show_menu(); time_t getTeensy3Time(); +String addLeadingZero(int number); +String getCurrentDatestring(); void setup() { Serial.begin(SERIAL_BAUD); //Debug and Program @@ -238,6 +241,20 @@ void setup() { }else{ Serial.println("Card initialized."); display.print(F("OK")); display.display(); + if (datalogging){ + int filenumber=0; + char buffer[6]; + sprintf(buffer, "%04d", filenumber); + datalogging_filename="LOG_"+String(buffer)+".TXT"; + while(SD.exists(datalogging_filename) && filenumber<10000) { + Serial.print(datalogging_filename); Serial.println(" exists"); + filenumber++; + sprintf(buffer, "%04d", filenumber); + datalogging_filename="LOG_"+String(buffer)+".TXT"; + + } + Serial.print(datalogging_filename); Serial.println(" is free"); + } } analogReadResolution(12); @@ -272,6 +289,7 @@ void setup() { } else { Serial.println("RTC has set the system time"); display.println(F("OK")); display.display(); + } @@ -576,15 +594,36 @@ void loop() { static unsigned long last_datalogging_write=0; + static boolean logging_headerWritten=false; if (datalogging) { #define LOGGINGINTERVAL 100 if (loopmillis-last_datalogging_write>LOGGINGINTERVAL) { last_datalogging_write=loopmillis; - File dataFile = SD.open("datalog.txt", FILE_WRITE); + + File dataFile = SD.open(datalogging_filename, FILE_WRITE); if (dataFile) { // if the file is available, write to it - dataFile.println("TEST asdf"); + if (!logging_headerWritten) { + dataFile.print("time,cmd_L,cmd_R,"); + dataFile.print("current_L,current_R,"); + dataFile.print("rpm_L,rpm_R,"); + dataFile.print("temp,vbat,"); + dataFile.println("trip,currentConsumed"); + logging_headerWritten=true; + } + dataFile.print(String(loopmillis)); dataFile.print(";"); + dataFile.print(esc.getCmdL()); dataFile.print(";"); + dataFile.print(esc.getCmdR()); dataFile.print(";"); + dataFile.print(esc.getFiltered_curL(),3); dataFile.print(";"); + dataFile.print(esc.getFiltered_curR(),3); dataFile.print(";"); + dataFile.print(esc.getFeedback_speedL_meas()); dataFile.print(";"); + dataFile.print(esc.getFeedback_speedR_meas()); dataFile.print(";"); + dataFile.print(esc.getFeedback_boardTemp()); dataFile.print(";"); + dataFile.print(esc.getFeedback_batVoltage()); dataFile.print(";"); + dataFile.print(esc.getTrip()); dataFile.print(";"); + dataFile.print(esc.getCurrentConsumed(),3); + dataFile.println(""); dataFile.close(); } } @@ -770,7 +809,7 @@ void display_show_stats() { static float mincurR=0; mincurL=min(mincurL,esc.getFiltered_curL()); mincurR=min(mincurR,esc.getFiltered_curR());*/ - + display.print(F("Bat=")); display.print(esc.getFeedback_batVoltage()); display.print(F(" min=")); display.println(esc.getMinBatVoltage()); display.print(F("Temp=")); display.print(esc.getFeedback_boardTemp()); display.print(F(" max=")); display.println(esc.getMaxBoardTemp()); @@ -779,8 +818,13 @@ void display_show_stats() { display.print(F("trip=")); display.print(esc.getTrip(),0); display.print(F(", ")); display.print(esc.getCurrentConsumed(),3); display.println(F("Ah")); display.print(F("eff.=")); display.print(esc.getTrip()/esc.getCurrentConsumed(),0); display.println(F("m/Ah")); - display.print(F("RTC=")); display.print(now()); display.println(F("")); - display.print(F("Logging=")); display.print(datalogging); display.println(F("")); + display.print(F("RTC=")); display.print(getCurrentDatestring()); display.println(F("")); + + if (datalogging) { + display.print(datalogging_filename); display.print(F(" ")); display.print(loopmillis/1000); display.println(F("s")); + }else{ + display.print("No SD"); display.println(F("")); + } display.display(); // Show initial text @@ -871,4 +915,16 @@ void display_show_menu() { time_t getTeensy3Time() { return Teensy3Clock.get(); -} \ No newline at end of file +} + +String addLeadingZero(int number) { + if (number<10) { + return "0"+String(number); + } + return String(number); +} + +String getCurrentDatestring() { + return addLeadingZero(year())+addLeadingZero(month())+addLeadingZero(day())+"-"+addLeadingZero(hour())+addLeadingZero(minute())+addLeadingZero(second()); +} +