arduino si riavvia da solo ... poca ram?

perchè forzi i caratteri ad essere String? tienili come caratteri che risparmi ram e cpu

in oltrecon available() tu ti assicuri che ci sia almeno UN carattere, ma poi fai DUE read, quindi potresti bloccarti semplicemente perchè i byte nel file sono dispari...