Přihlaste se ke svému účtu Altimeter Cloud
Nemáte účet? Vytvořit účet
Pošleme vám potvrzovací odkaz e-mailem. Zkontrolujte složku se spamem, pokud ho neobdržíte.
Již máte účet? Přihlásit se
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.
/* * 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