Příručka Mercury V1
Zjistěte, jak létat rychle a snadno, připojte svůj výškoměr pro nahrávání na webové stránky Altimeter Cloud a využijte všechny pokročilé funkce. Pokud jste v nouzi nebo teprve začínáte, jste tu správně.

Použití knihovny ESP32 Preferences

PDF

Knihovna NVS / Preferences umožňuje ukládat nastavení a fragmenty informací do oddílu NVS na paměti flash. To znamená, že tato nastavení lze nastavit a přečíst bez ztráty při restartování nebo výpadku napájení. Touto knihovnou můžete ukládat většinu typů proměnných v podepsaných i nepodepsaných verzích.

V tomto příkladu vytváříme tlačítko reset funkčního jako zapínač pro LED. Při režimu vypnuto byste také mohli přidat hluboký spánek, abyste ušetřili energii, ale více o tom později. Pokaždé, když stisknete tlačítko napájení, bude Neopixel buď zapnutý, nebo vypnutý v závislosti na stavu přepínače. 

Knihovna Preferences podporuje všechny běžné typy proměnných. Pro celá čísla použijte prefs.putInt("key", 42) a prefs.getInt("key", 0), kde druhý parametr je výchozí hodnota, pokud klíč neexistuje. Pro nepodepsaná celá čísla existují putUInt / getUInt, užitečné pro čítače jako prefs.putUInt("boots", bootCount). Řetězce se ukládají pomocí prefs.putString("wifi_ssid", "MyNetwork") a získávají se pomocí prefs.getString("wifi_ssid", ""). Pro hodnoty s pohyblivou řádovou čárkou použijte prefs.putFloat("calibration", 1.0523) a prefs.getFloat("calibration", 1.0) — užitečné pro posunu senzorů. Logické hodnoty použijte prefs.putBool("enabled", true) a prefs.getBool("enabled", false). Chcete-li odebrat jeden klíč, zavolejte prefs.remove("key"), nebo chcete-li vymazat celý obor názvů, použijte prefs.clear(). Každý obor názvů je omezen na 15 znaků a klíče na 15 znaků. Vždy zavolejte prefs.end(), když skončíte, aby se uvolnily prostředky.

Používáte Arduino IDE? Náš online programátor zahrnuje Mercury_Pins.h ve výchozím nastavení, takže jména pinů fungují bez problémů. Pokud používáte Arduino IDE nebo jiný programátor, zkopírujte obsah karty Mercury_Pins.h a vložte ho na začátek vašeho programu.
/*
 * Mercury NVS Preferences Příklad
 * Přepíná hodnotu (0/1) v paměti flash pokaždé, když se deska spustí.
 * Pokud 1: Neopixel LED diody se rozsvítí na zelenou. Pokud 0: LED diody zůstávají vypnuté.
 *
 * Hodnota přežije cykly vypnutí a opakované naprogramování.
 * Resetujte nahráním nového kódu, který vymaže obor názvů.
 *
 * Nejsou potřebné žádné externí knihovny — Preferences a Neopixel
 * jsou vestavěny v rámci ESP32 Arduino.
 */

#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);

    // Zapnutí napájení Neopixel
    pinMode(LEDPOWER, OUTPUT);
    digitalWrite(LEDPOWER, HIGH);
    delay(10);

    pixels.begin();
    pixels.clear();
    pixels.show();

    // Otevřete obor názvů NVS ("demo" může být libovolné jméno, až 15 znaků)
    prefs.begin("demo", false);  // false = režim čtení/zápisu

    // Přečtěte uloženou hodnotu (výchozí nastavení je 0, pokud ještě není uložena)
    int state = prefs.getInt("toggle", 0);

    // Převrátit to
    int newState = (state == 0) ? 1 : 0;

    // Uložte novou hodnotu do flash
    prefs.putInt("toggle", newState);
    prefs.end();

    Serial.println("Předchozí stav: " + String(state));
    Serial.println("Nový stav: " + String(newState));

    if (newState == 1) {
        // Všech 5 pixelů zeleně
        for (int i = 0; i < 4; i++) {
            pixels.setPixelColor(i, pixels.Color(0, 30, 0));
        }
        pixels.show();
        Serial.println("LED diody: ZELENÁ (resetujte pro vypnutí)");
    } else {
        Serial.println("LED diody: VYPNUTO (resetujte pro zapnutí)");
    }
}

void loop() {
    // Nic nedělat — jen demonstrace úložiště NVS
    delay(1000);
}

#pragma once
/*
 * Mercury (ESP32-C6) Definice pinů
 * Přiřazení GPIO specifické pro desku
 */

// ââ LED stavového indikátoru (Neopixel) ââ
#define LEDPOWER      3    // Napájení Neopixel (pro povolení vyjíždět HIGH)
#define LED           2    // Signál dat Neopixel

// ââ Sběrnice I2C ââ
#define SDA           21   // Data I2C
#define SCL           22   // Hodiny I2C

// ââ Napájení senzoru ââ
#define VACC          20   // Napájecí linka senzoru (pro povolení vyjíždět HIGH)

// ââ Porty pro všeobecné použití ââ
#define GP06          6    // Port GP06
#define GP07          7    // Port GP07

// ââ Vysokoproudý výstup ââ
#define OUT1          5    // Vysokoproudý výstup (např. pyro / relé)

// ââ LED stupnice baterie ââ
#define BL1           4    // LED baterie 1 (nejnižší)
#define BL2           14   // LED baterie 2
#define BL3           15   // LED baterie 3
#define BL4           18   // LED baterie 4
#define BL5           19   // LED baterie 5 (nejvyšší)

// ââ Indikátory ââ
#define DISK          8    // LED aktivity disku

// ââ Analogové / Detekce ââ
#define BATIN         0    // Napětí baterie (dělič 1:1)
#define USBDETECT     1    // Detekce napájení USB (HIGH = USB přítomno)
#define BUTTON        9    // TLAČÍTKO na desce, tlačítko spouštění, ale lze je používat