Leggere array da SD

Salve a tutti.
Sono al mio terzo progetto con arduino e mi piacerebbe implementare la lettura da SD di alcuni valori da leggere ciclicamente, anche se dell’argomento sono un neofita.

Immaginiamo di avere sulla SD 1 file chiamato “1.txt”

al suo interno avrà una struttura simile:

004
000,254,000,254,000,254,000,254,000,254,000,254
254,000,254,000,254,000,254,000,254,000,254,000
000,254,000,254,000,254,000,254,000,254,000,254
254,000,254,000,254,000,254,000,254,000,254,000

Nella prima riga ho un byte che devo leggere e inserire in una variabile.
Nelle righe seguenti ho una sequenza di 12 byte separati da virgole(o qualsiasi altra cosa, i file li devo ancora creare). Il numero di righe è variabile, in alcuni file possono essere 4 righe, in altri anche 20.

Qual’è il metodo migliore secondo voi per leggere la prima riga, convertirla e salvarla su un array di 12 byte, inviare l’array tramite I2C, poi leggere la seconda riga e ripetere il tutto?

ho letto in giro che le operazioni su stringhe e scheda sd sono molto lente, stavo cercando un metodo che non mi sciupi molte risorse :roll_eyes:
Grazie anticipatamente a tutti!

ciao, benvenuto ... hai mai letto questo forum?

Ciao,

si, lo leggo e lo seguo da diverse settimane. Purtroppo non essendo un esperto di programmazione in C (i miei progetti precedenti riguardavano PIC programmati in volgare assembler, e il linguaggio C l'ho studiato sommariamente a scuola 6 anni fa) sto cercando di imparare quanto mi è necessario per andare avanti con i miei progetti.. Ho già scritto una bella porzione di codice del mio progetto ma aspetto che mi arrivi l'arduino mega per iniziare un pò di debug ;) non mi era chiaro come implementare questa particolare lettura da SD, ho letto tutto e il contrario di tutto e destreggiarmi tra i 100 modi per raggiungere il risultato mi risulta difficile.

Grazie Francesco

Non molto tempo fa abbiamo parlato di split di char provenienti da linee di file sulla SD

In pratica i tuoi separatori sono ‘,’ e ‘\n’ … quello che ottieni leggendo tra una virgola e l’altra sono byte, quindi 254 in questo caso sembra essere 1 byte, ma in realtà sono 3 byte che hai scritto sulla SD

perciò hai 2 soluzioni:

  1. ti salvi su file un carattere ascii che corrisponde al tuo byte separato da una virgola
  2. prelevi ogni singolo char tra una virgola e l’altra e usi “atoi” per fare le conversioni