How to save data without SD card?



  • What is recommended practice to save data without user having SD card? For example say you make a counter and want to save the last count. Since M5 can easily reset from a loose connection , it would be great to save the last count internally.

    In my rsearch i find it is possible to save to flash memory (?) but there are a limited amounts of read /writes. is this correct? I dont want to ruin my machine by having a counter take up all the one-time memory

    any tips?



  • use "Preferences" class
    #include <Preferences.h>

    Preferences preferences;

    void setup() {
    Serial.begin(115200);
    Serial.println();

    // Open Preferences with my-app namespace. Each application module, library, etc
    // has to use a namespace name to prevent key name collisions. We will open storage in
    // RW-mode (second parameter has to be false).
    // Note: Namespace name is limited to 15 chars.
    preferences.begin("my-app", false);

    // Remove all preferences under the opened namespace
    //preferences.clear();

    // Or remove the counter key only
    //preferences.remove("counter");

    // Get the counter value, if the key does not exist, return a default value of 0
    // Note: Key name is limited to 15 chars.
    unsigned int counter = preferences.getUInt("counter", 0);

    // Increase counter by 1
    counter++;

    // Print the counter to Serial Monitor
    Serial.printf("Current counter value: %u\n", counter);

    // Store the counter to the Preferences
    preferences.putUInt("counter", counter);

    // Close the Preferences
    preferences.end();

    // Wait 10 seconds
    Serial.println("Restarting in 10 seconds...");
    delay(10000);

    // Restart ESP
    ESP.restart();
    }

    void loop() {}