(RISOLTO) Arduino si blocca!!!

Ciao a tutti! Vorrei un vostro parere: possiedo un arduino uno e sto facendo uno sketch in cui ho utilizzato varie librerie come quella per la sd card, il display e la bignumber che è utile per fare calcoli con elevata precisione di cui mi è stato detto che sfrutta molta ram.
Lo sketch occupa 28.048 byte su 32.256 byte e la memoria dinamica occupa 1.224 byte (59%) su 2.048 byte.
Facendo partire solo il void setup arduino svolge le sue funzioni. Tuttavia aggiungendo anche il void loop arduino non completa nemmeno la parte del void setup e si ferma.
Secondo voi sono andato oltre le capacità della centralina? Quale altro arduino mi permetterebbe di far funzionare lo sketch?
Grazie.

Matteo90:
Secondo voi sono andato oltre le capacità della centralina? Quale altro arduino mi permetterebbe di far funzionare lo sketch?

Se realmente sei andato in stack/heap overflow, molto facile, devi passare alla Mega 2560 che ha 8k di ram.

Matteo90:
Ciao a tutti! Vorrei un vostro parere: possiedo un arduino uno e sto facendo uno sketch in cui ho utilizzato varie librerie come quella per la sd card, il display e la bignumber che è utile per fare calcoli con elevata precisione di cui mi è stato detto che sfrutta molta ram.
Lo sketch occupa 28.048 byte su 32.256 byte e la memoria dinamica occupa 1.224 byte (59%) su 2.048 byte.

Questo è il consumo statico, ossia senza il conteggio delle variabili allocate a runtime dinamicamente. Siccome la bigNumber crea una notevole mole di dati in RAM, è facile che il chip si sia freezato per esaurimento della memoria.
Prova abbassando la precisione (ossia il numero di cifre decimali) alla bigNumber ed a racchiudere le scritte fisse che mandi al display nella funzione F(), ad esempio se hai:

lcd.Print("CIAO");

sostituisci con

lcd.Print(F("CIAO"));

leo72:

Matteo90:
Ciao a tutti! Vorrei un vostro parere: possiedo un arduino uno e sto facendo uno sketch in cui ho utilizzato varie librerie come quella per la sd card, il display e la bignumber che è utile per fare calcoli con elevata precisione di cui mi è stato detto che sfrutta molta ram.
Lo sketch occupa 28.048 byte su 32.256 byte e la memoria dinamica occupa 1.224 byte (59%) su 2.048 byte.

Questo è il consumo statico, ossia senza il conteggio delle variabili allocate a runtime dinamicamente. Siccome la bigNumber crea una notevole mole di dati in RAM, è facile che il chip si sia freezato per esaurimento della memoria.
Prova abbassando la precisione (ossia il numero di cifre decimali) alla bigNumber ed a racchiudere le scritte fisse che mandi al display nella funzione F(), ad esempio se hai:

lcd.Print("CIAO");

sostituisci con

lcd.Print(F("CIAO"));

Grazie Leo72! Ho abbassato la precisione e ora sembra che funzioni bene!

Ti linko questo articolo, trovi un pò di info sul risparmio della memoria nonché un paio di soluzioni per controllare la memoria RAM libera a runtime: in questo modo puoi vedere durante l’esecuzione del codice quanta te ne resta libera.

leo72:
Ti linko questo articolo, trovi un pò di info sul risparmio della memoria nonché un paio di soluzioni per controllare la memoria RAM libera a runtime: in questo modo puoi vedere durante l'esecuzione del codice quanta te ne resta libera.

Grazie mille!!!!! XD