arduino si riavvia da solo ... poca ram?

a questo punto però per esempio nell else:

else {
    	client.print(String(myFile.read()))

devo lascairlo come stringa perchè mi serve che mi stampi il carattere corretto giusto?

poi non devi togliere l'available. Ogni volta che chiari read estrai una lettera dal flusso (che può essere file, seriale, internet o quello che vuoi). Quello che tu fai è una read() ogni volta che vuoi confrontare il carattere, ma così facendo in realtà stai leggendo ogni volta una lettera diversa. Devi fare una read in una variabile char una sola volta a ciclo e poi usare la variabile. In questo modo stai lavorando sempre con la stessa lettera

se ho capito bene devo , prima mettere il varore del read in una nuova variabile, confrontare la mia variabile , rifare il ciclo in modo che andrò a sostituire la mia variabile col nuovo carattere letto , finche non troverò il /n ,
ho aggiunto in fondo alla stringa un # però , perchè ho pensato che leggendo byte a byte non leggerò mai un /n (non come carattere vero ma come andata a capo) perchè sono 2 byte giusto? quindi al primo passaggio del ciclo leggo / al secondo n... quindi devo per forza usare un delimitatore come il cancelletto... o sto toppando?