Arduino - Memoria dinamica esaurita

Yep. Da qualche versione di GCC in poi, gli enum tengono sempre 2 byte, con conseguente inutile dispendio di RAM e flash. Con quell'attributo le puoi forzare a un singolo byte, che spesso è più che sufficiente. In alternativa si potrebbe usare il flag -fshort-enums.

Inoltre uso effettivamente u8glib per l'OLED, che usa un buffer più piccolo, e infine una libreria per SD semplificata che supporta solo FAT16. Niente SD > 2 GB dunque, ma è un prezzo accettabile per me.