Log in op je Altimeter Cloud account
Nog geen account? Maak er een aan
We sturen een bevestigingslink naar je e-mail. Controleer je spammap als je deze niet ontvangt.
Heb je al een account? Inloggen
De NVS / Preferences-bibliotheek laat u instellingen en informatiefragmenten opslaan in de NVS-partitie op het flashgeheugen. Dit betekent dat deze instellingen kunnen worden ingesteld en gelezen zonder verloren te gaan bij herstart of stroomverlies. Met deze bibliotheek kunt u de meeste variabeletypes in zowel ondertekende als niet-ondertekende versies opslaan.
In dit voorbeeld zorgen we ervoor dat de resetknop als aan/uit-knop voor de led werkt. U kunt ook deep sleep toevoegen als deze in de uit-modus staat om stroom te besparen, maar daar gaan we later meer op in. Telkens wanneer u op de aan/uit-knop drukt, gaat de Neopixel aan of uit, afhankelijk van de schakeltoestand.
De Preferences-bibliotheek ondersteunt alle veelgebruikte variabeletypes. Voor gehele getallen gebruikt u prefs.putInt("key", 42) en prefs.getInt("key", 0) waarbij de tweede parameter de standaardwaarde is als de sleutel niet bestaat. Voor niet-ondertekende gehele getallen zijn er putUInt / getUInt, handig voor tellers zoals prefs.putUInt("boots", bootCount). Tekenreeksen worden opgeslagen met prefs.putString("wifi_ssid", "MyNetwork") en opgehaald met prefs.getString("wifi_ssid", ""). Voor drijvende-kommawaarden gebruikt u prefs.putFloat("calibration", 1.0523) en prefs.getFloat("calibration", 1.0) — handig voor sensoroffsets. Booleaanse waarden gebruiken prefs.putBool("enabled", true) en prefs.getBool("enabled", false). Om een enkele sleutel te verwijderen, roept u prefs.remove("key") aan, of om een hele namespace te wissen, gebruikt u prefs.clear(). Elke namespace is beperkt tot 15 tekens en sleutels tot 15 tekens. Roep altijd prefs.end() aan wanneer u klaar bent om resources vrij te geven.
/* * Mercury NVS Preferences Voorbeeld * Schakelt telkens wanneer het bord wordt gestart een waarde (0/1) in het flashgeheugen om. * Als 1: NeoPixel LED's worden groen. Als 0: LED's blijven uit. * * De waarde blijft behouden bij stroominschakelingen en herprogrammering. * Herstellen door nieuwe code te uploaden die de namespace wist. * * Geen externe bibliotheken nodig — Preferences en NeoPixel * zijn ingebouwd in het ESP32 Arduino-framework. */ #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); // Schakel NeoPixel in pinMode(LEDPOWER, OUTPUT); digitalWrite(LEDPOWER, HIGH); delay(10); pixels.begin(); pixels.clear(); pixels.show(); // Open NVS namespace ("demo" kan elke naam zijn, tot 15 tekens) prefs.begin("demo", false); // false = lees-/schrijfmodus // Lees de opgeslagen waarde (standaard 0 als nog niet opgeslagen) int state = prefs.getInt("toggle", 0); // Schakel het om int newState = (state == 0) ? 1 : 0; // Sla de nieuwe waarde op in flash prefs.putInt("toggle", newState); prefs.end(); Serial.println("Vorige status: " + String(state)); Serial.println("Nieuwe status: " + String(newState)); if (newState == 1) { // Alle 4 pixels groen for (int i = 0; i < 4; i++) { pixels.setPixelColor(i, pixels.Color(0, 30, 0)); } pixels.show(); Serial.println("LED's: GROEN (reset om uit te schakelen)"); } else { Serial.println("LED's: UIT (reset om in te schakelen)"); } } void loop() { // Niets te doen — alleen NVS-opslag demonstreren delay(1000); }#pragma once /* * Mercury (ESP32-C6) Pin-definities * Bordspecifieke GPIO-toewijzingen */ // ââ Status LED (NeoPixel) ââ #define LEDPOWER 3 // NeoPixel-voeding (HIGH om in te schakelen) #define LED 2 // NeoPixel-datasignaal // ââ I2C-bus ââ #define SDA 21 // I2C-data #define SCL 22 // I2C-klok // ââ Sensorvoeding ââ #define VACC 20 // Sensorvoedingsrail (HIGH om in te schakelen) // ââ Algemene doeleinden poorten ââ #define GP06 6 // GP06-poort #define GP07 7 // GP07-poort // ââ Hoge-stroomuitgang ââ #define OUT1 5 // Hoge-stroomuitgang (bijv. pyro / relais) // ââ Batterijaanduiding LED's ââ #define BL1 4 // Batterij LED 1 (laagst) #define BL2 14 // Batterij LED 2 #define BL3 15 // Batterij LED 3 #define BL4 18 // Batterij LED 4 #define BL5 19 // Batterij LED 5 (hoogst) // ââ Indicatoren ââ #define DISK 8 // Schijfactiviteit LED // ââ Analoog / Detectie ââ #define BATIN 0 // Batterijtespanning (1:1-verdeler) #define USBDETECT 1 // USB-voedingsdetectie (HIGH = USB aanwezig) #define BUTTON 9 // KNOP op het bord, opstartknop maar kan gebruikt worden