Consigli per un uso attento di ArduinoJson

Buonasera arduiniani,
ho creato uno sketch per il mio Arduino MEGA che comunica costantemente con un Raspberry via seriale, ricevendo comandi ed inviando risposte impacchettate in stringhe Json, usando la libreria ArduinoJson.
Ora, quando si tratta di creare una stringa Json con questa libreria, ci sono fondamentalmente due opzioni che si possono usare:

  • DynamicJsonDocument, che utilizza la memoria heap dell’Arduino;
  • StaticJsonDocument, che utilizza la memoria stack.

Come suggerito dalla documentazione ufficiale della libreria, è preferibile usare il DynamicJsonDocument quando si ha a che fare con oggetti grandi (<1KB), mentre è preferibile lo Static quando hai oggetti più piccoli, perchè è più veloce (non invocando malloc() e free()).
Nel mio caso, gli oggetti in questione sono veramente piccoli; sono piccole stringhe JSON di massimo 3 righe, quindi mi verrebbe da pensare che mi conviene usare lo StaticJsonDocument. Tuttavia, siccome la comunicazione col Raspberry è costante e avviene ad una frequenza di almeno 1 volta ogni 15 minuti (e perdura nei giorni) , ho paura che si arrivi prima o poi ad una situazione di stack overflow. Voi che ne pensate?

Le statiche NON vengono allocate e deallocate ... altrimenti non sarebbe statiche, quindi, se hanno fatto questa opzione, è proprio per evitare frammentazione della memoria. Se occupi pochi bytes usa l'allocazione statica e non dovresti avere problemi.

Guglielmo

Quindi non pensi che ci sia la possibilità, a lungo andare, di esaurire la memoria?

Sai come funzionano i vari tipi di memoria ? ... prova a guardare QUI :wink:

Guglielmo