Melden Sie sich bei Ihrem Altimeter Cloud Konto an
Noch kein Konto? Registrieren
Wir senden Ihnen einen Bestätigungslink per E-Mail. Prüfen Sie auch Ihren Spam-Ordner.
Haben Sie bereits ein Konto? Anmelden
Die NVS / Preferences-Bibliothek ermöglicht es, Einstellungen und Informationsausschnitte in der NVS-Partition im Flash-Speicher zu speichern. Dies bedeutet, dass diese Einstellungen gespeichert und gelesen werden können, ohne bei einem Neustart oder bei Stromausfällen verloren zu gehen. Mit dieser Bibliothek können Sie die meisten Variablentypen in sowohl signierten als auch unsignierten Versionen speichern.
In diesem Beispiel machen wir die Reset-Taste zu einer Ein-/Aus-Taste für die LED. Sie könnten auch Deep Sleep hinzufügen, wenn sie sich im Aus-Modus befindet, um Strom zu sparen, aber es gibt mehr darüber später. Jedes Mal, wenn Sie die Power-Taste drücken, wird das Neopixel je nach Toggle-Status an- oder ausgeschaltet.
Die Preferences-Bibliothek unterstützt alle gängigen Variablentypen. Für Ganzzahlen verwenden Sie prefs.putInt("key", 42) und prefs.getInt("key", 0), wobei der zweite Parameter der Standard ist, wenn der Schlüssel nicht vorhanden ist. Für vorzeichenlose Ganzzahlen gibt es putUInt / getUInt, nützlich für Zähler wie prefs.putUInt("boots", bootCount). Strings werden mit prefs.putString("wifi_ssid", "MyNetwork") gespeichert und mit prefs.getString("wifi_ssid", "") abgerufen. Für Gleitkommawerte verwenden Sie prefs.putFloat("calibration", 1.0523) und prefs.getFloat("calibration", 1.0) — praktisch für Sensor-Offsets. Boolesche Werte verwenden prefs.putBool("enabled", true) und prefs.getBool("enabled", false). Um einen einzelnen Schlüssel zu entfernen, rufen Sie prefs.remove("key") auf, oder verwenden Sie prefs.clear(), um einen gesamten Namespace zu löschen. Jeder Namespace ist auf 15 Zeichen und Schlüssel auf 15 Zeichen begrenzt. Rufen Sie immer prefs.end() auf, wenn Sie fertig sind, um Ressourcen freizugeben.
/* * Mercury NVS Preferences Beispiel * Schaltet einen Wert (0/1) im Flash-Speicher bei jedem Systemstart um. * Wenn 1: NeoPixel-LEDs werden grün. Wenn 0: LEDs bleiben aus. * * Der Wert bleibt nach Stromausfällen und Neuprogrammierung erhalten. * Zurücksetzen durch Hochladen neuer Codes, die den Namespace löscht. * * Keine externen Bibliotheken erforderlich — Preferences und NeoPixel * sind im ESP32 Arduino Framework integriert. */ #include "Preferences.h" #include "Adafruit_NeoPixel.h" #include "Mercury_Pins.h" Preferences prefs; Adafruit_NeoPixel pixels(4, LED, NEO_GRB + NEO_KHZ800); void setup() { Serial.begin(115200); delay(500); // NeoPixel einschalten pinMode(LEDPOWER, OUTPUT); digitalWrite(LEDPOWER, HIGH); delay(10); pixels.begin(); pixels.clear(); pixels.show(); // NVS Namespace öffnen ("demo" kann ein beliebiger Name sein, bis zu 15 Zeichen) prefs.begin("demo", false); // false = Lese-/Schreibmodus // Den gespeicherten Wert auslesen (Standard 0, wenn nicht noch gespeichert) int state = prefs.getInt("toggle", 0); // Umschalten int newState = (state == 0) ? 1 : 0; // Den neuen Wert im Flash speichern prefs.putInt("toggle", newState); prefs.end(); Serial.println("Vorheriger Status: " + String(state)); Serial.println("Neuer Status: " + String(newState)); if (newState == 1) { // Alle 4 Pixel grün for (int i = 0; i < 4; i++) { pixels.setPixelColor(i, pixels.Color(0, 30, 0)); } pixels.show(); Serial.println("LEDs: GRÜN (Reset zum Ausschalten)"); } else { Serial.println("LEDs: AUS (Reset zum Einschalten)"); } } void loop() { // Nichts zu tun — nur zur Veranschaulichung der NVS-Speicherung delay(1000); }#pragma once /* * Mercury (ESP32-C6) Pin-Definitionen * Boardspezifische GPIO-Zuordnungen */ // ââ Status-LED (NeoPixel) ââ #define LEDPOWER 3 // NeoPixel-Stromversorgung (HIGH fahren zum Aktivieren) #define LED 2 // NeoPixel-Datensignal // ââ I2C-Bus ââ #define SDA 21 // I2C-Daten #define SCL 22 // I2C-Takt // ââ Sensor-Stromversorgung ââ #define VACC 20 // Sensor-Stromversorgungsschiene (HIGH fahren zum Aktivieren) // ââ Universelle Anschlüsse ââ #define GP06 6 // GP06-Anschluss #define GP07 7 // GP07-Anschluss // ââ Hochstromausgang ââ #define OUT1 5 // Hochstromausgang (z.B. Pyro / Relais) // ââ Batterie-Balken-LEDs ââ #define BL1 4 // Batterie-LED 1 (niedrigste) #define BL2 14 // Batterie-LED 2 #define BL3 15 // Batterie-LED 3 #define BL4 18 // Batterie-LED 4 #define BL5 19 // Batterie-LED 5 (höchste) // ââ Indikatoren ââ #define DISK 8 // Festplattenaktivitäts-LED // ââ Analog / Erkennung ââ #define BATIN 0 // Batteriespannung (1:1 Teiler) #define USBDETECT 1 // USB-Stromerkennung (HIGH = USB vorhanden) #define BUTTON 9 // BUTTON auf dem Board, Boot-Button aber kann verwendet werden