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() {}