Ciao a tutti,
molti utenti hanno sviluppato un App µPanel a più schermate (quindi usando più volte l'istruzione "Serial.println("....") ) ma hanno notato un'occupazione di memoria molto elevata dello sketch Arduino. Ad alcuni, in fase di compilazione è anche comparso l'errore "memoria insufficiente".
A prima vista, si può pensare che le varie stringhe HTCML dei pannelli hanno saturato la memoria programma, ma in realtà quella che si è esaurita è la RAM.
Il motivo è che le stringhe di testo presenti le codice vengono sempre allocate in RAM, anche se sono dei semplici testi dentro una Serial.print() e, quindi, non ci sembrano associate a una variabile.
SOLUZIONE
La soluzione è semplice, basta dire al compilatore che per tutte le stringhe di testo COSTANTI contenute nei vari Serial.print non vanno allocate in RAM.
Sostituite:
Questo va fatto solo per i "Serial.print" che contengono stringhe di testo COSTANTI e non per i "Serial.print" che contengono variabili.
Con questa semplice accortezza, anche il più piccolo Arduino potra contentere decine di pannelli µPanel!
molti utenti hanno sviluppato un App µPanel a più schermate (quindi usando più volte l'istruzione "Serial.println("....") ) ma hanno notato un'occupazione di memoria molto elevata dello sketch Arduino. Ad alcuni, in fase di compilazione è anche comparso l'errore "memoria insufficiente".
A prima vista, si può pensare che le varie stringhe HTCML dei pannelli hanno saturato la memoria programma, ma in realtà quella che si è esaurita è la RAM.
Il motivo è che le stringhe di testo presenti le codice vengono sempre allocate in RAM, anche se sono dei semplici testi dentro una Serial.print() e, quindi, non ci sembrano associate a una variabile.
SOLUZIONE
La soluzione è semplice, basta dire al compilatore che per tutte le stringhe di testo COSTANTI contenute nei vari Serial.print non vanno allocate in RAM.
Sostituite:
Code:
Serial.print ("....") >>>>>>>>>> Serial.print (F("...."));
Serial.println("....") >>>>>>>>>> Serial.println (F("...."));
Questo va fatto solo per i "Serial.print" che contengono stringhe di testo COSTANTI e non per i "Serial.print" che contengono variabili.
Con questa semplice accortezza, anche il più piccolo Arduino potra contentere decine di pannelli µPanel!