Buongiorno a tutti,
So bene come memorizzare su SD dei dati (letture di sensori) ma quello che più mi interessa è poi come visualizzarli su un database in un successivo momento, oppure fare dei confronti con diversi intervalli di tempo. Quindi, avevo pensato di utilizzare i grafici di Excel. Salvando diversi file .csv su SD con nome:
Giornaliero
Settimanale
Mensile
etc..
Ma poi con il tempo mi sono accorto che non può funzionare questo sistema semplicemente perchè quando arduino gira per anche 2 settimane senza che io svuoti il file giornaliero, quest'ultimo si riempie di migliaia di dati in cui poi la lettura successiva in Excel è praticamente impossibile perchè farà un grafico con centinaia di scritte nel periodo del tempo, esattamente cosi:
Quindi ho un problema su come conservare questi dati...non mi posso mettere ogni giorno a sfilare la SD da arduino, salvare il file su PC rinominando il giorno e poi inserire nuovamente la SD su arduino...purtroppo arduino starà in una zona in cui non è possibile utilizzare internet. Qualcuno ha qualche suggerimento?
Non ho capito qual'è il problema. Se i dati sono tanti, il grafico puoi farlo selezionando solo una parte dei dati !! Però questo è una conoscenza di Excel e non Arduino.
Ma il file giornaliero è sempre lo stesso ? Perchè non fare file separati, uno per ogni giorno ?
E l'ideale sarebbe appunto quello.
Ogni giorno, si crea un file diverso rinominato con giorno e mese attuale per esempio file giornalieri rinominati tipo:
22_Mar
23_Mar
24_Mar
Etc..
Poi, per esempio fare dei file settimanali rinominati:
In cui solo e soltanto dati provenienti in quei giorni devono essere memorizzati in quei file.
Ci avevo pensato pure per questa cosa, ma potrei riuscirci rinominando personalmente tutti i file scrivendo sullo sketch per esempio:
(Sketch per soli due giorni, 22 e 23 marzo)
Ma cosi sono io che scrivo i file, non è arduino che capisce in base alla data quale file creare e con quale rinominatura.. questo significa che dovrei riempire uno sketch di tantissime righe per ogni giorno dell'anno...spero ci sia un altro metodo a questo.
Meglio poi gestire questo problema con Arduino piuttosto che Excel..se no poi con quest'ultimo dovrei selezionare manualmente i dati.
A proposito...sapevo poi che il nome di un file su SD non può superare gli 8 caratteri..è vero?
Devi creare il nome del file che dipende dalla data.
char nomefile[13];
...
sprintf(nomefile,"%04d%02d%02d.cvs",HCRTC.GetYear(),HCRTC.GetMonth(),HCRTC.GetDay());
se la data è 1/2/2017 otterrai 20170201.csv (AAAAMMGG)
oppure
sprintf(nomefile,"%02d_%02d_%02d.cvs",HCRTC.GetYear()%100,HCRTC.GetMonth(),HCRTC.GetDay());
se la data è 1/2/2017 otterrai 17_02_01.csv (AA_MM_GG)
devi farlo in due passaggi, la sprintf() modifica il primo parametro mentre ritorna semplicemente il numero di caratteri scritti (cosa che ci interessa poco).
Guarda della libreria che usi il file .h
Dentro ci deve essere una qualche funzione (metodo) della classe per ottenere l'anno. In C le maiuscole/minuscole fanno differenza. Forse la tua lib non usa GetYear() ma getYear() oppure getyear()
Stessa cosa per giorno e mese
Nid, volevo ringraziarti comunque per la risposta datami...non ho modo per adesso di provarlo perchè non ho sottomano un modulo SD ma ti ringrazio comunque, non appena l'avrò proverò il tuo codice
nid69ita:
Guarda della libreria che usi il file .h
Dentro ci deve essere una qualche funzione (metodo) della classe per ottenere l'anno. In C le maiuscole/minuscole fanno differenza. Forse la tua lib non usa GetYear() ma getYear() oppure getyear()
Stessa cosa per giorno e mese
Grazie. Spulciando nella libreria sono riuscito a risolvere.