Probleme mémoire dynamique saturée

Salut, je travaille sur un Arduino ATMega2560 et j'ai un problème de mamoire dynamique...
J'ai un table de vraiment beaucoup de caractères, genre 1000. Bref j'explose la mémoire dynamique..
Alors sur les forum, j'ai trouvé qu'on pouvait faire ceci pour mettre une chaine en Flash:

sprintf(buffer_UFD__BFLT1_BSCOM, F("Time;"));

Or lorsqeu je le fais exactement comme ça, j'ai une erreur:

cannot convert 'const __FlashStringHelper*' to 'const char*' for argument '2' to 'int sprintf(char*, const char*, ...)'

Merci pour votre aide...

Sakut,
Bon merci pour ta réponse, est-ce qu'il existe une solution ?

Faire attention votre usage mémoire - avez vous besoin de 1000 caractères vraiment où c'est juste par précaution? Pouvez vous coder différemment ? éviter les librairies gourmandes en mémoire etc.. Sans voir votre code difficile de vous aider

Virer sprintf fera gagner pas mal de mémoire flash (la fonction associée est très gourmande) mais pas vraiment de RAM

Ok, je vais regarder ça lundi au taf, Merci pour vos reponses, je vous tiens au courant...

Salut à tous,
Bon alors voici ce que me dit Arduino lorsque je n'utilise pas ma chaîne (qui en fait fait très exactement 7684 caractères, soit près de 8kio).

Le croquis utilise 25068 octets (9%) de l'espace de stockage de programmes. Le maximum est de 253952 octets.
Les variables globales utilisent 1810 octets (22%) de mémoire dynamique, ce qui laisse 6382 octets pour les variables locales. Le maximum est de 8192 octets.

Donc ma chaîne de 8Kio devrait passer.... Mais voici le message exact de l'erreur..

Le croquis utilise 32304 octets (12%) de l'espace de stockage de programmes. Le maximum est de 253952 octets.
Les variables globales utilisent 9040 octets (110%) de mémoire dynamique, ce qui laisse -848 octets pour les variables locales. Le maximum est de 8192 octets.

Mémore insuffisante ; consulter la page http://www.arduino.cc/en/Guide/Troubleshooting#size pour obtenir des astuces sur comment le réduire.
Erreur de compilation pour la carte Arduino/Genuino Mega or Mega 2560

Ce que je ne comprends pas, c'est que j'ai encore de la place, comment lui dire de mettre cette variable dans le programme et non pas dans les variable globales (en plus elle n'est pas déclarée en tant que telle....
Pour info, oui, j'ai besoin de cette chaîne qui est une entête de fichier csv, conséquent oui, mais j'en ai besoin...
merci

Salut à tous,
Yep, et bien j'ai exactement le même résultat..
Mon .h

class LecturePldUfd
{
    public:
        LecturePldUfd(const DateTime pNow, const unsigned char *pDirName);
        virtual ~LecturePldUfd();

        bool getPldUfdData(const unsigned int pBatFlt1);
        bool LecturePldUfd::lecturePldUfd (void);

    protected:

    private:
                
        unsigned char *dirName;
        unsigned char *fileName;

        DateTime date;
        unsigned char Buffer_PLD[128];
        unsigned char buffer_UFD__BFLT1_BSCOM[7690];
        
        unsigned char texte_P[] PROGMEM;
};

Mon .cpp

#include "LecturePldUfd.h"

LecturePldUfd::LecturePldUfd(const DateTime pNow, const unsigned char *pDirName){//ctor  

   this->dirName = pDirName;
   this->date = pNow; 

   texte_P[0] = "Time;UFD_STAT........ 7684 car";
}

et l'erreur...

Le croquis utilise 32276 octets (12%) de l'espace de stockage de programmes. Le maximum est de 253952 octets.
Les variables globales utilisent 9038 octets (110%) de mémoire dynamique, ce qui laisse -846 octets pour les variables locales. Le maximum est de 8192 octets.
Mémore insuffisante ; consulter la page http://www.arduino.cc/en/Guide/Troubleshooting#size pour obtenir des astuces sur comment le réduire.
Erreur de compilation pour la carte Arduino/Genuino Mega or Mega 2560

Bon si pas de solution simple, j'ai peut-çetre un moyen de faire autrement, alors on laisse tomber...
Merci quand même.

Salut,
Bon en fait j’ai réussi à m’en sortir.
En fait il suffit de ne pas créer de varaible et d’écrire directement dans le fichier en plaçant la chaine en mémoire flash:

fichier.println(F("Ma chaine de 7684 Octets"));

Et j’obtiens à la compilation:

Le croquis utilise 40126 octets (15%) de l'espace de stockage de programmes. Le maximum est de 253952 octets.
Les variables globales utilisent 2244 octets (27%) de mémoire dynamique, ce qui laisse 5948 octets pour les variables locales. Le maximum est de 8192 octets.

Sachant que juste avant j’avais:

Le croquis utilise 32830 octets (12%) de l'espace de stockage de programmes. Le maximum est de 253952 octets.
Les variables globales utilisent 2244 octets (27%) de mémoire dynamique, ce qui laisse 5948 octets pour les variables locales. Le maximum est de 8192 octets.

On voit bien qu’il place les presque 8 kio de ma chaîne en flash…

Merci pour votre aide et problème résolu…