Ciao, ragazzi avrei la necessità di definire in modo dinamico sia il nome del file sia il nome della cartella nella quale salvare su una memoria SD.
Per quanto riguarda il nome del file ci sono riuscito senza problemi, ho un po' di problemi per quel che riguarda la cartella, infatti ho provato a definire un secondo vettore di char (che contiene i nomi da assegnare alle cartelle) per poi unirlo con quello che contiene i nomi dei file. Ma non funziona vi allego il codice, mi farebbe comodo qualche indicazione
void saveTotSD(){
char *name_mese[12]={
"Gennaio.txt","Febbraio.txt","Marzo.txt","Aprile.txt","Maggio.txt","Giugno.txt","Luglio.txt","Agosto.txt","Settembre.txt","Ottobre.txt","Novembre.txt","Dicembre.txt" };
char *name_anno[3]={
"2015/","2016/","2017/"};
byte anno_corrente = (int) year - 15;
char *name_file[1] = {name_mese[(int) month - 1]};
//Ho provato ad unirli in questo modo usando la 'sprintf'
//sprintf(name_file, "%s%s", name_anno[anno_corrente], name_mese[(int) month - 1]);
Serial.println(name_file[0]);
int filesavedold;
int filesaved;
if (SD.exists(name_file)) {
SD.remove(name_file);
Serial.print("Rimosso!");
//}
// open the file. note that only one file can be open at a time
// so you have to close this one before opening another.
myFiletotale = SD.open(name_file[0], FILE_WRITE);
delay(100);
filesavedold = myFiletotale.size();
// if the file opened okay, write to it:
if (myFiletotale) {
myFiletotale.print("Utente1: ");
myFiletotale.println(convertSecondtoHour(EEPROM_readInt(0), 0));
myFiletotale.print("Utente2: ");
myFiletotale.println(convertSecondtoHour(EEPROM_readInt(4), 1));
myFiletotale.print("Utente3: ");
myFiletotale.println(convertSecondtoHour(EEPROM_readInt(8), 2));
myFiletotale.print("Utente4: ");
myFiletotale.println(convertSecondtoHour(EEPROM_readInt(12), 3));
myFiletotale.print("Utente5: ");
myFiletotale.println(convertSecondtoHour(EEPROM_readInt(16), 4));
myFiletotale.print("Utente6: ");
myFiletotale.println(convertSecondtoHour(EEPROM_readInt(20), 5));
myFiletotale.print("Utente7: ");
myFiletotale.println(convertSecondtoHour(EEPROM_readInt(24), 6));
myFiletotale.print("Utente8: ");
myFiletotale.println(convertSecondtoHour(EEPROM_readInt(28), 7));
myFiletotale.print("Utente9: ");
myFiletotale.println(convertSecondtoHour(EEPROM_readInt(32), 8));
myFiletotale.print("Utente10: ");
myFiletotale.println(convertSecondtoHour(EEPROM_readInt(36), 9));
filesaved = myFiletotale.size();
// close the file:
myFiletotale.close();
}
else {
// if the file didn't open, print an error:
Serial.print("error opening ");
Serial.println(name_file[0]);
}
if(filesaved > filesavedold){
lcd.setCursor(0,2);
lcd.print(" ");
lcd.setCursor(0,3);
lcd.print(" ");
lcd.setCursor(0,2);
lcd.print("OK, salvato");
delay(500);
lcd.setCursor(0,2);
lcd.print(" ");
lcd.setCursor(0,3);
lcd.print(" ");
}
else {
lcd.setCursor(0,2);
lcd.print("Errore salvataggio! ");
lcd.setCursor(0,3);
lcd.print(" ");
delay(3000);
}
}
Le variabili month e year, contengono rispettivamente il mese e l'anno attuale che rilevo con un RTC.
Grazie