#include Preferences preferences; // Objet pour stocker les données en flash // ❌ ERREUR #1 : Tableau mal dimensionné (100 caractères alors qu’on concatène beaucoup) // 💡 ASTUCE : mets une taille plus grande (ex. 256) si tu stockes beaucoup de valeurs char dataStr[100] = ""; // ❌ ERREUR #2 : Buffer trop petit pour dtostrf // 💡 ASTUCE : mets au moins buffer[16] pour accueillir un float correctement converti char buffer[7]; #define MAX_ENTRIES 800 // Nombre maximal d'entrées stockées void setup(void) { // ❌ ERREUR #3 : Vitesse série mal orthographiée (11520 au lieu de 115200) // 💡 ASTUCE : utilise 115200 Serial.begin(11520); delay(1000); // while (!Serial) delay(10); // will pause Zero, Leonardo, etc until serial console opens delay(3000); // ❌ ERREUR #4 : Mauvais nom d’espace ("storag" au lieu de "storage") // 💡 ASTUCE : le nom doit être identique partout preferences.begin("storag", false); // Récupération de l'index actuel int index = preferences.getInt("index", 0); float temp_mem; // ❌ ERREUR #5 : Boucle trop large, on lit au-delà des valeurs écrites // 💡 ASTUCE : utiliser index ou une borne raisonnable (ex. 20) au lieu de MAX_ENTRIES for (int j = 0; j < MAX_ENTRIES; j++) { // ❌ ERREUR #6 : Clé incohérente (si l’écriture se faisait avec "temp" sans underscore, ça ne correspond pas) // 💡 ASTUCE : garde toujours le même format, ex. "temp_" + String(j) String key = "temp" + String(j); temp_mem = preferences.getFloat(key.c_str()); // ❌ ERREUR #7 : pas de contrôle quand aucune donnée n’existe (renvoie 0.00 par défaut) // 💡 ASTUCE : utilise getFloat(key, valeurParDéfaut) pour éviter d’afficher n’importe quoi Serial.print(temp_mem); Serial.print(","); } /* // ❌ ERREUR #8 : Mauvais terminateur de chaîne : strcat(dataStr, 0); // 💡 ASTUCE : utilise strcat(dataStr, "\0"); ou ne mets rien (les chaînes C sont déjà terminées) // ❌ ERREUR #9 : dtostrf(temp_mem, 5, 1, buffer); avec buffer trop petit // 💡 ASTUCE : augmente la taille du buffer comme vu plus haut */ preferences.end(); delay(1000); } void loop() { }