Buonasera a tutti,
sono a chiedere il vostro prezioso aiuto per un problema che sto riscontrando con il nome variabile da dare ai file salvati sulla micro SD ad ogni nuovo avvio.
per adesso per dare il nome concatenato al file ho utilizzato questo codice ma ho notato che non viene salvato niente sulla MIcro SD come posso fare?
Non si concatenano il quel modo le stringhe, mia stai scrivendo in Basic
Il nome del file lo devi creare prima e poi parrare la variabile che lo contiene ...
... dat che sconsigliamo SEMPRE l'uso di cella classe String su piccole MCU come quelle di Arduino, ti do le indicazioni per le stringhe classiche del 'C' ovvero per dei char array.
Prima di tutto dichiari dove vuoi mettere il nome con una variabile di tipo char array sufficentemnete lunga da contenerlo completo ... tipo 32 caratteri + 1 per il terminatore (0x00):
char nomeFile[33];
... poi ci metti dentro la prima parte del come file e ci accodi il resto usando le funzioni che trovi in <string.h> che fa parte di AVR libc (libreria SEMPRE disponibile nel IDE di Arduino), tipo strcpy() e strcat().
Non so che tipo di variabile è 'FileSd' e quindi non posso farti un esempio fino a quando non lo dici.
attenzione, che oltre a non usare oggetti String su piccole MCU
e a non poter comunque passare oggetti String ai metodi della SD che aprono file, perché si aspettano stringhe di C...
non puoi nemmeno usare nome file lunghi
la lunghezza dei nomi file rimane (come in DOS) di 8 caratteri, un punto (obbligatorio? non è mai stato chiaro...) e un'estensione di 3 caratteri
inoltre c'è "confusione" sull'uso di lettere maiuscole/minuscole
quindi stacci attento, ma molto, sui nomi di file...
Beh ... questo dipende dalla piattaforma e dalla libreria che utilizzi ...
... la SdFat ha totalmente superato tali limiti e, ad esempio, su piattaforma ESP, anche se tu includi la classica SD in realtà viene usata la SdFat
sì, ma dalla documentazione dell'autore con una uno e la SdFat V2 la UNO si e no si accende, non mi meraviglierebbe che fosse la versione "precedente" quella del library manager,
Ma lo hai letto bene il mio post #2 ? Ti sei andato a studiare le funzioni che ti ho indicato ?
E comunque, se usi la libreria SD standard di Arduino, come ti ha già detto Standardoil, devi limitare il nome del file a 8.3 caratteri maiuscoli come con il vecchio MSDOS ...
The library supports FAT16 and FAT32 file systems on standard SD cards and SDHC cards. It uses short 8.3 names for files.
La variabile intera va da ... a ...
(Ovvero quante cifre?)
E comunque numero 1 diverso da carattere '1' e anche da stringa "1"
Domana seria: quando e come hai studiato C?
O sei completamente autodidatta?
Nulla di male, intendiamoci, io ho studiato C talmente tanti anni prima di usarlo che me ne ero pure dimenticato, sono partito da praticamente autodidatta
Poi durante uno dei miei tanti tragislochi ho trovato sia il K&R che l'attestato del corso...
Vengo dal mondo della programmazione VBA di Office e mi sono introdotto a questo mondo ma noto che molte cose sono molto differenti.
Comunque anche in VBA sono autodidatta ma non arrivato molto in alto.
Comunque ho trovato forse una cosa che è un po più nelle mie corde secondo te può funzionare?
sia famiglia[0].figlio che famiglia[1].pestifero_nipote sono ingegneri civili come te
e tutti e due hanno dato informatica al primo anno e conoscono il C quasi (quasi) come me...
hanno anche ambedue lo stesso cognome (per puro caso?) e lo stesso nome di battesimo...
oltretutto laureati nello stesso ateneo, per fortuna non coetanei...
che comunque qualche docente qualche commento ha fatto...
anche io, che sono vecchio e stanco, li confondo spesso...
ma bando alle ciance
vediamo come si potrebbe risolvere il tuo problema specifico
char filename[]= "bat0.txt"; // la base per poi scrivere il nome corrente
// il carattere da modificare è .... h
// modifico il carattere
filename[h]=variabielintera+....;
// e qui lo studio è essenziale, ma sono cose facili da trovare
come vedi è quasi più facile così che usando oggetti String
Dove numeroProgressimo è una variabile int numero progressivo che viene scritto nella memoria EEPROM e è progressivo ad ogni accensione.
Secondo re ci puo essere qualcosa che non va