ESP32 - Kleine Werte direkt speichern!
Normalerweise gehen Variablen verloren, sobald der Funduino ESP32-WROOM32 mit CP2102 ausgeschaltet oder neu gestartet wird. Mit der Bibliothek Preferences lassen sich kleine Werte dauerhaft im internen Flash-Speicher ablegen. Sie bleiben auch nach einem Neustart oder Stromverlust erhalten.
Wofür ist das praktisch?
- Helligkeit oder Lautstärke merken
- Grenzwerte und Kalibrierwerte speichern
- den zuletzt gewählten Betriebsmodus behalten
- Zählerstände oder kleine Benutzereinstellungen sichern
Vorbereitung
1. Den ESP32 mit einem Micro-USB-Datenkabel an den Computer anschließen.2. In der Arduino IDE über den Boardverwalter das Paket „esp32 by Espressif Systems“ installieren.3. Unter Werkzeuge > Board das „ESP32 Dev Module“ auswählen.4. Unter Werkzeuge > Port den neu erschienenen COM-Port auswählen.Startzähler dauerhaft speichern
Der folgende Sketch zählt, wie oft der ESP32 gestartet wurde. Der Zähler wird nach jedem Start im Flash gespeichert. Drückst du anschließend RST, steigt der Wert weiter, statt wieder bei 1 zu beginnen.

So testest du es:
1. Sketch auf den ESP32 hochladen.2. Seriellen Monitor öffnen und 115200 Baud einstellen.3. Die angezeigte Startnummer ansehen, zum Beispiel "Startnummer: 1".4. Einmal kurz die RST-Taste auf dem ESP32 drücken. Der ESP32 startet neu.5. Im seriellen Monitor erscheint jetzt die nächste Startnummer, zum Beispiel "Startnummer: 2".6. RST noch einmal drücken. Der Zähler erhöht sich bei jedem Neustart weiter.7. ESP32 vom USB-Kabel trennen und anschließend wieder anschließen. Der zuvor gespeicherte Zählerstand bleibt erhalten und läuft beim nächsten Start einfach weiter.Hier kannst du den Sketch als Text kopieren:
#include <Preferences.h>
Preferences preferences;
void setup() {
Serial.begin(115200);
// Speicherbereich öffnen
preferences.begin("settings", false);
// Gespeicherten Zähler laden, Standardwert ist 0
int startCount = preferences.getInt("starts", 0);
startCount++;
// Neuen Zähler dauerhaft speichern
preferences.putInt("starts", startCount);
Serial.print("Start count: ");
Serial.println(startCount);
preferences.end();
}
void loop() {
}
Hinweis: Startet der Upload nicht, BOOT gedrückt halten und beim Beginn der Übertragung loslassen.