Librerie STL C++ nei programmi per Arduino

Salve a tutti,
sono alle prime armi con Arduino e mi piacerebbe utilizzare le strutture dati che si utilizzano normalmente nei programmi in c++ come e simili, nonchè utilizzare i vari algoritmi di <math.h> e .
Tuttavia queste librerie (mi sembra) mancano all’interno del programma e di conseguenza il compilatore non mi accetta nulla, ho mancato qualche passaggio oppure devo introdurre io, come terza parte, le librerie della STL?
E se devo introdurle io, quale fonte mi consigliate?

P.S. finora all’interno dell’IDE mi sono solo limitato a scrivere
#include
e a provare senza successo ad inserire delle librerie esterne provenienti da alcuni blog.

Grazie mille

NO, non fanno parte delle librerie a corredo e non so neanche se ne esista una versione per Arduino ... ... e poi ... che Arduino hai ???

Guglielmo

Purtroppo devi fare a meno della STL e in genere e meglio evitare di allocare risorse dinamicamente con new o malloc ecc. Questo vale per tutti gli arduino basati sui microcontroller Atmel della famiglia Atmega. Per Arduino DUE se non si usa un RTOS allocare memoria dinamica può creare comunque problemi al funzionamento del programma, magari non immediatamente.

Sul PC, quando si allocano risorse di memoria dinamicamente in modo trasparente intervengono i servizi di sistema e non sono in questo caso.

In mancanza di un sistema operativo che sovraintende tutte le risorse peraltro limitate conviene sempre evitare la creazioni di strutture dinamiche e la loro conseguente distruzione. É invece consigliabile allocare dinamicamente memoria sono all'inizio del programma specie per quelle strutture complesse che all'inizio del programma possono crescere in dimensioni dinamicamente. Il problema viene solo quando si vuole allocare e liberare memoria dinamicamente in modo frequente come accade ad un programma che gira sul PC.

La STL appunto usa l'allocazione dinamica, in ogni cosa.

Una soluzione c'è se proprio il programma non riesci a pensarlo in modo statico e serve della dinamicità puoi usare delle librerie di terze parti che però devono essere in codice sorgente e manualmente devi arrangiare il tutto per farla diventare una libreria "Arduinica" (Si tratta in sostanza di un pezzo di codice sorgente che viene copiato nel tree di build).

http://www.cs.virginia.edu/~lcc-win32/ccl/ccl.html Questo link ti porta alla documentazione di una libreria C che devi però portare a libreria Arduinica. Ci sono pezzi di codice interessante e ad occhio sembra efficiente.

Altre alternativi le trovi nel playground http://playground.arduino.cc/

Ricordo di aver visto qualcosa di simile alla STL ma ottimizzata per embedded e che quindi e vagamente simile alla STL.

Facci sapere se trovi qualcosa in giro.

Ciao.

Ricordati che la UNO ha solo 2048 byte di memoria. :sweat_smile: