Problemi di Flash

@lollo:
i microcontrollori sono basati su un'architettura Harvard, dove la RAM in cui sono gestite le variabili del programma è una memoria separata dalla Flash che ospita il codice.
La RAM è di piccole dimensioni e può capitare di esaurirla in tempi brevi.

Ad esempio, una cosa che i principianti non sanno è che una stringa stampata su seriale o su Lcd col comando Serial.println("ciao"), viene prima copiata in RAM e da lì prelevata e spedita all'output. Anche un array creato dinamicamente può consumare tutta la RAM (basta dimensionarlo in modo che sfori il quantitativo disponibile). Oppure un algoritmo ricorsivo (salti a sé stesso) può esaurire la memoria.
Questo comporta che anche un programma di pochi kB di occupazione di Flash può occupare tutta la RAM.
Ti suggerisco la lettura di questa guida che ho fatto, dove trovi un paio di modi per sapere l'occupazione di RAM del tuo programma.