Ciao Roxdragon,
ho dato un'occhiata al tuo sketch ma mi sono soffermato soltanto sulla gestione del PROGMEM.
Ho notato che quello che metti in memoria pure essendo array lunghissimi sono composti sostanzialmente da pochi numeri ripetuti innumerevoli volte.
Quindi ho provato ad alleggerire l'uso della memoria flash:
prog_uint16_t P500 [] PROGMEM = {500 };
prog_uint16_t P504 [] PROGMEM = {504 };
prog_uint16_t P508 [] PROGMEM = {508 };
prog_uint16_t P512 [] PROGMEM = {512 };
prog_uint16_t P584 [] PROGMEM = {584 };
prog_uint16_t P588 [] PROGMEM = {588 };
prog_uint16_t P592 [] PROGMEM = {592 };
prog_uint16_t P596 [] PROGMEM = {596 };
prog_uint16_t P600 [] PROGMEM = {600 };
prog_uint16_t P1000[] PROGMEM = {1000};
prog_uint16_t P1596[] PROGMEM = {1596};
prog_uint16_t P1600[] PROGMEM = {1600};
prog_uint16_t P1604[] PROGMEM = {1604};
prog_uint16_t P1608[] PROGMEM = {1608};
prog_uint16_t P1612[] PROGMEM = {1612};
prog_uint16_t P4424[] PROGMEM = {4424};
prog_uint16_t P4428[] PROGMEM = {4428};
prog_uint16_t P4432[] PROGMEM = {4432};
prog_uint16_t P4436[] PROGMEM = {4436};
prog_uint16_t P4488[] PROGMEM = {4488};
prog_uint16_t P4492[] PROGMEM = {4492};
prog_uint16_t P4496[] PROGMEM = {4496};
prog_uint16_t P4500[] PROGMEM = {4500};
prog_uint16_t P4512[] PROGMEM = {4512};
prog_uint16_t P4516[] PROGMEM = {4516};
prog_uint16_t P4520[] PROGMEM = {4520};
prog_uint16_t P4524[] PROGMEM = {4524};
prog_uint16_t P5260[] PROGMEM = {5260};
prog_uint16_t P5264[] PROGMEM = {5264};
prog_uint16_t P5268[] PROGMEM = {5268};
prog_uint16_t P5272[] PROGMEM = {5272};
//ARIA CALDA
PROGMEM const uint16_t *C30[] = {P4492,P4432,P596,P1600,P592,P508,P592,P1608,P588,P1608,P596,P504,P588,P508,P596,P1604,P592,P504,P596,P504,P596,P1604,P592,P504,P600,P500,P592,P1604,P600,P1600,P596,P504,P596,P1600,P596,P504,P596,P504,P588,P1608,P596,P1600,P596,P1604,P588,P1608,P600,P1600,P592,P1604,P592,P1604,P600,P1600,P592,P508,P596,P500,P592,P508,P596,P504,P596,P504,P588,P508,P596,P1604,P588,P508,P596,P1604,P588,P1608,P600,P1600,P592,P1604,P592,P508,P592,P508,P596,P500,P592,P1608,P596,P500,P592,P508,P596,P504,P596,P504,P588,P1608,P596,P1604,P592,P5268,P4520,P4424,P592,P1608,P596,P504,P588,P1608,P596,P1604,P592,P504,P600,P500,P592,P1608,P596,P500,P592,P508,P592,P1604,P592,P508,P596,P504,P596,P1600,P596,P1604,P588,P508,P596,P1604,P592,P504,P596,P504,P600,P1600,P592,P1604,P592,P1604,P600,P1600,P596,P1600,P592,P1608,P588,P1608,P596,P1604,P592,P504,P596,P504,P600,P500,P592,P508,P592,P504,P600,P500,P592,P1604,P592,P508,P592,P1604,P592,P1608,P596,P1600,P592,P1608,P588,P508,P596,P504,P596,P504,P588,P1608,P596,P504,P600,P500,P592,P504,P596,P504,P588,P1612,P592,P1604,P592,P1000};
PROGMEM const uint16_t *C29[] = {P4488,P4436,P592,P1604,P592,P508,P592,P1604,P592,P1608,P596,P504,P588,P512,P592,P1604,P588,P512,P592,P504,P600,P1600,P592,P508,P596,P500,P592,P1608,P596,P1600,P596,P504,P596,P1600,P596,P504,P596,P504,P592,P1604,P600,P1600,P592,P1604,P592,P1608,P596,P1600,P596,P1604,P592,P1604,P588,P1612,P596,P500,P592,P508,P592,P508,P596,P500,P592,P508,P592,P508,P596,P1600,P596,P504,P596,P1604,P592,P504,P596,P1604,P592,P1604,P592,P508,P592,P508,P596,P500,P592,P1608,P596,P504,P588,P1608,P600,P500,P592,P508,P592,P1604,P592,P1604,P600,P5264,P4516,P4432,P596,P1600,P592,P508,P596,P1600,P596,P1604,P588,P512,P592,P504,P600,P1600,P592,P508,P596,P500,P592,P1608,P596,P504,P588,P508,P596,P1604,P588,P1608,P596,P504,P592,P1604,P600,P500,P592,P508,P592,P1604,P592,P1608,P596,P1600,P596,P1604,P592,P1604,P588,P1612,P596,P1600,P592,P1608,P588,P508,P592,P508,P596,P504,P588,P508,P596,P504,P596,P504,P588,P1608,P600,P500,P592,P1608,P596,P500,P592,P1608,P596,P1600,P596,P504,P600,P500,P588,P508,P596,P1604,P592,P508,P592,P1604,P592,P508,P596,P500,P600,P1600,P596,P1600,P592,P1000};
PROGMEM const uint16_t *C28[] = {P4496,P4424,P592,P1608,P596,P504,P592,P1604,P600,P1600,P592,P504,P600,P500,P592,P1608,P596,P500,P592,P508,P596,P1604,P588,P508,P596,P504,P600,P1600,P592,P1604,P592,P508,P592,P1604,P592,P508,P596,P504,P596,P1600,P596,P1604,P592,P1604,P600,P1600,P592,P1604,P592,P1604,P600,P1600,P596,P1600,P596,P504,P596,P504,P600,P500,P592,P504,P596,P504,P600,P500,P592,P1604,P600,P500,P592,P508,P596,P504,P596,P1600,P596,P1604,P588,P508,P596,P504,P600,P500,P592,P1604,P600,P1600,P596,P1600,P592,P508,P596,P504,P588,P1608,P596,P1604,P592,P5268,P4520,P4428,P600,P1596,P596,P504,P600,P1600,P596,P1600,P592,P508,P596,P504,P596,P1600,P596,P504,P600,P500,P592,P1604,P588,P512,P592,P508,P592,P1604,P592,P1604,P592,P508,P592,P1608,P588,P508,P596,P504,P596,P1604,P592,P1604,P588,P1612,P596,P1600,P592,P1608,P588,P1608,P596,P1604,P592,P1604,P588,P512,P592,P504,P600,P500,P588,P512,P592,P508,P596,P500,P600,P1600,P596,P504,P596,P500,P592,P508,P596,P1604,P592,P1604,P588,P512,P592,P508,P592,P504,P600,P1600,P596,P1600,P592,P1608,P588,P508,P592,P508,P596,P1604,P592,P1604,P588,P1000};
// Ho dovuto eliminare gli altri C e F perché sono troppi caratteri da inserire qui... ma puoi capire da te come aggiungerli.
//OFF
PROGMEM const uint16_t *OFF[] = {P4492,P4432,P592,P1608,P588,P508,P596,P1604,P588,P1608,P596,P504,P588,P512,P592,P1604,P600,P500,P592,P508,P596,P1600,P592,P508,P596,P504,P596,P1600,P596,P1604,P588,P512,P592,P1604,P592,P508,P592,P1604,P592,P1608,P596,P1600,P596,P1604,P588,P508,P596,P1604,P588,P1608,P596,P1604,P592,P508,P592,P508,P596,P500,P592,P508,P596,P1600,P592,P508,P596,P504,P596,P1600,P596,P1604,P592,P1604,P600,P500,P592,P508,P592,P508,P596,P500,P592,P508,P592,P508,P596,P504,P588,P508,P596,P1604,P588,P1608,P596,P1604,P592,P1608,P596,P1600,P596,P5264,P4524,P4424,P592,P1608,P596,P504,P588,P1608,P596,P1604,P592,P504,P596,P504,P600,P1600,P592,P508,P596,P500,P592,P1608,P596,P500,P592,P508,P596,P1604,P588,P1608,P596,P504,P588,P1608,P600,P500,P592,P1608,P596,P1600,P592,P1608,P588,P1608,P596,P504,P588,P1608,P596,P1604,P592,P1608,P596,P500,P592,P508,P596,P504,P596,P500,P592,P1608,P596,P504,P588,P508,P596,P1604,P592,P1604,P600,P1600,P592,P508,P596,P500,P592,P508,P592,P508,P596,P504,P588,P508,P596,P504,P596,P504,P588,P1608,P596,P1604,P592,P1604,P592,P1608,P596,P1600,P592,P1000};
static const uint16_t **IR[] PROGMEM = {C30, C29, C28, OFF};
Per il resto dello sketch.... non ce la posso fare!!! 