arduino si riavvia da solo ... poca ram?

  1. if (String("#") == (String(myFile.read()))){ dici qui giusyo? se non metto string, mi sembra che mi riporti i caratteri in formato esadecimale no? quindi al posto di string mi dici di mettere byte?

  2. while (myFile.available()) { intendi qui? dovrei togliere il available?

per fare un confronto non ti interessa di farlo in esadecimale, ottale binario o altro. quindi diventa if ( '#' == myFile.read() )

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