Mercury V1 handleiding
Ontdek hoe je snel en eenvoudig kunt vliegen, verbind je altimeter om te uploaden naar de Altimeter Cloud website en gebruik ook alle geavanceerde functies. Als je vastloopt of net begint, dan ben je hier op de juiste plek.

Gebruik van de ESP32 Preferences bibliotheek

PDF

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.

Gebruikt u Arduino IDE? Onze online programmeur bevat standaard Mercury_Pins.h, dus de pinnamen werken zonder problemen. Als u Arduino IDE of een ander programma gebruikt, kopieert u de inhoud van het Mercury_Pins.h-tabblad en plakt u deze aan het begin van uw programma.
/*
 * 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