leggere diversi file di testo contenenti delle variabili

Salve a tutti!
Finalmente dopo un pò di pratica, la mia conoscenza sulla programmazione e arduino da -1 è arrivata a 0 :D! Nel mio nuovo progetto, ho dei file di testo che al momento che spingo un determinato pulsante, mi legge il relativo file situato nella SD. Sinceramente è difficile trovare buoni tutorial su questo "campo". Girovagando sul forum ho trovato questo leggere file .csv da sd card - Software - Arduino Forum dove l'utente Pablos ha fatto un esempio

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
}
//---------------------------------------------------------------------
}

ed è proprio quello che cercavo! Però come posso ottenere il primo temp_dato se sono lettere? esempio

una testo a caso non troppo lungo, 100,50,23,45

Dumper:
Però come posso ottenere il primo temp_dato se sono lettere?

la funzione sarebbe isalpha(*p)

Io ho fatto in questo modo, ci sono pochi commenti ma credo sia facile da capire.

A te interessa solamente la funzione chiamata " funzione() ", il resto del codice serve solo per controllare se la funzione funziona.

#include <SPI.h>
#include <SD.h>
#define csSD 53
#define NDATI 4  // numero di dati per ogni riga
#define DEBUG 0  // stampa i caratteri letti sopra ai valori calcolati
File f;
char c; 
int vettore[NDATI],valore = 0, dato = 0;

void setup() {
  Serial.begin(115200);
  if (!SD.begin(csSD))  Serial.println(" Errore SD ");

  if (!SD.exists("nome.est")) {
    Serial.println("Il file \"nome.est\" non esiste");
    Serial.println("Il file \"nome.est\" verra' creato");

    f = SD.open("nome.est", FILE_WRITE);
    f.println("File nome.est");
    f.print("100,50,23,45 \n");
    f.println("101,51,24,46");
    f.println("102,52,25,47");
    f.println("103,53,26,48");
    f.println("104,54,27,49");
    f.println("105,55,28,50");
    f.println("105,56,29,51");
    f.print("FINE FILE");

    if (f)  { Serial.println("scrittura andata buon fine"); }
    if (!f) { Serial.println("scrittura non andata a buon fine"); }
    f.close();

  }
  else {
    f = SD.open("nome.est", FILE_READ);
    if ( f ) {
      Serial.print("il file e' composto da ");
      Serial.print( f.available() );
      Serial.print( " caratteri\n");
      f.close();
      apri("nome.est",'r');
      funzione();
      chiudi();
      
      
      
    }//if
    
  }//else
}//void

void loop() { 
  if (Serial.available()) {
        
    char carattere = Serial.read();
    Serial.println(carattere);
    if (carattere == 'c') { 
      if (SD.exists("nome.est")) {
        Serial.println("il file esiste, verra' cancellato");
        SD.remove("nome.est");
        if (!SD.exists("nome.est")) { Serial.println("il file è stato cancellato");} 
        else {Serial.println("non è stato possibile rimuovere il file");}
      }
      else {Serial.println("il file non esiste");}
    }
  }
  
    for (int d = 0; d < NDATI; d++){
    Serial.print(vettore[d]++ );
    Serial.print(' ');  
   } 
  Serial.print('\n');
  delay(1000);
    
}

int funzione(){ 
  while (f.available()  ) {
        c = f.read(); if(DEBUG){Serial.print(c);}
        if(isDigit(c)){ valore = valore * 10 +  c - 48; }
        if ( c == ',' ) { vettore[dato] = valore; dato++; valore = 0; }
        if ( c == '\n') { vettore[dato] = valore; dato = 0 ; valore = 0; StampaSeriale();}
      }
      
}//funzione()
void StampaSeriale(){

  for (int d = 0; d < NDATI; d++){ 
    Serial.print(vettore[d] );
    Serial.print(' ');  
   } 
  Serial.print('\n');

  }
  
void apri(String nome,char rw){
  
  
  switch (rw){
 case 'r':  f = SD.open(nome, FILE_READ); break;
 case 'w':  f = SD.open(nome,FILE_WRITE); break;
 default : Serial.print("errore");break;
  }}

void chiudi(){f.close();}

Mi ricorda tanto questo
http://forum.arduino.cc/index.php?topic=141557.0;nowap