Mi sono accorto che le lib arduino, mettono a disposizione la funzione malloc(...) e realloc(....) che servono rispettivamente a riservare la ram ad una variabile, ed a liberarla... per le stringhe ti consiglio di usarle... almeno così liberi spazio in ram... considera che quello che passi come stringa, verrà mantenuto in ram... quindi all'esaurimento della ram, il micro si resetta! in piu al posto di usare interi, usa uint8_t / uint16_t / uint32_t / uint64_t in base a quello che devi fare...