date e time come nome file per SD

Salve a tutti, dopo circa una settimana di prove mi ritrovo a dover chiedere aiuto. Devo assegnare come nome al logging file la data e ora (esempio 271016235845.CSV) ma proprio non ci riesco.
Uso come RTC il DS3231 con libreria DS3231.h e scivo su SD card con libreria SD.h ma nulla da fare.
Ho provato array, String, splittare e accodare ma nulla mi da sempre errore.
Se uso un nome costante funziona.
So che esistono molti esempi in rete per il DS1307 ma non per il modulo che uso io.

Sapete indirizzarmi su dove documentarmi? grazie anticipatamente.

Alberto

comunque il nome , con la libreria SD, non puo' essere più lungo di 8+3 caratteri xxxxxxxx.xxx

Grazie Brunello, è uno di quei post che avevo già letto e purtroppo usa la libreria rtc diversa.

Comunque ridarò una letta più approfondita.

Alberto

DS3231.h vuole dire poco, precisamente quale libreria usi ?

Scusa, ci sarà da qualche parte un get.hour ... get.min ... get.sec, prendi questi valori e li metti in un array di char.
per la unghezza dipende, farai un file per ogni giorno e ci scrivi dentro righe con le ore e minuti + qualcosa, no?

Se la lib è questa: GitHub - rodan/ds3231: arduino library for DS3231 RTC
guarda un pò che fa in un suo esempio:

struct ts t;
DS3231_get(&t);
snprintf(buff, BUFF_MAX, "%d.%02d.%02d %02d:%02d:%02d %ld", 
                                       t.year,t.mon, t.mday, t.hour, t.min, t.sec, t.unixtime);
Serial.println(buff);

E al link di @brunello, c'e' un mio post ed uso la snprintf, quindi ...

Grazie per le risposte, la libreria si trova a questo link:

http://www.rinkydinkelectronics.com/library.php?id=73

Appena ho tempo riprovo a estrarre i dati e usare massimo 8+3 caratteri.

Alberto

A parte il fatto che "mi dà sempre errore" non vuol dire niente (quale errore? con quale codice?), io ti propongo l'utilizzo dell'ottima libreria PString, molto snella e comoda.

maredentro72:
Grazie per le risposte, la libreria si trova a questo link:
http://www.rinkydinkelectronics.com/library.php?id=73

Da quel manuale:
Time t = rtc.getTime();
e poi t.hour t.min t.year etc. ti danno i pezzi della data/ora

P.S. libreria del 2014 e abbastanza "strana" (direi del cappero) visto che per il giorno devi usare t.date invece di un più ovvio t.day !!

(t.year - 2000) / 10 + '0'; // anno decine
   t.year % 10 + '0';        // anno unita
   t.mon / 10 + '0';         // mese decine
   t.mon % 10 + '0';         // mese unita
   t.date / 10 + '0';        // giorno decine
   t.date % 10 + '0';        // giorno unita
   t.hour / 10 + '0';        // ora decine
   t.hour % 10 + '0';        // ora unita
   t.min / 10 + '0';         // minuti decine
   t.min % 10 + '0';         // minuti unita
   t.sec / 10 + '0';         // secondi decine
   t.sec % 10 + '0';         // secondi unita

Troppa grazia ragazzi, grazie x le dritte. La mia poca attenzione delle ore notturne non mi ha fatto vedere le risposte nascoste tra le righe della libreria.

Appena posso provo ad imbastire qualcosa.

Buon ponte. :wink:

Usare le librerie per tutto non è imparare, a volte si può andare dal tabacchino senza prendere la macchina :slight_smile:

Giusto ma le librerie svolgono quella parte di programmazione a basso livello che per i più (vedi il sottoscritto) sarebbe impossibile scrivere. :wink:

Alberto

Bene, grazie a tutti delle dritte ora riesco a creare un filename in formato data ora.

Prometto che d'ora in poi leggerò più attentamente le librerie... prima di chiedere aiuto. :cold_sweat:

Buona notte e grazie ancora