Dovresti fare una cosa simile se hai già la parte che ti inizializza la sd, controllo errori ecc
void read_sd_config()
{
String ReadLine;
char charBuf[40];
if(file.open(&root, "file.csv", O_READ))
{
int16_t c;
while ((c = file.read())>0)
{
ReadLine += (char)c;
if((char)c=='\n')
{
//--------------------------------------- LETTURA LINEE FILE-------------------------------
Serial.print(ReadLine);//debug
//-----------------------------------------------------------------------------------------
ReadLine.toCharArray(charBuf, 40);
get_data(charBuf);
ReadLine="";
}
}
}
else
{
Serial << F("File inesistente o errore SD ");
}
}
void get_data(char *charBuffer)
{
int temp_dato[]= {0,0,0,0}; //<<<<< (int) se usi numeri oltre il 255 altrimenti byte
char *p = charBuffer;
byte i = 0;
while (*p != '\0')
{
if (*p == ',') { ++i; ++p; continue;} // separatore usa quello che ti pare
if (isdigit(*p)) //questo controlla che siano solo numeri, se c'e' una lettera o uno spazio vuoto la salta
{
temp_dato[i] *= 10;
temp_dato[i] += (*p - '0');
}
++p;
}
//--------------------test di lettura dell'array verifica se e' corretta la scrittura
for (byte ii = 0; ii < 4; ii++)
{
Serial.println((String)temp_dato[ii]+" ");//debug
}
//---------------------------------------------------------------------
}
Per leggere l'ultima riga io di solito piazzo un EOF (end of file) alla fine, altrimenti non trova l'ultimo /n
Il char buffer l'ho impostato a 40, se la tua riga supera tale valore aumentalo, ma non esagerare
ciao