Connectez-vous à votre compte Altimeter Cloud
Pas encore de compte ? Créer un compte
Nous vous enverrons un lien de confirmation par e-mail. Vérifiez votre dossier spam si vous ne le recevez pas.
Vous avez déjà un compte ? Connexion
La bibliothèque NVS / Preferences vous permet de stocker des paramètres et des fragments d'information dans la partition NVS de la mémoire flash. Cela signifie que ces paramètres peuvent être définis et lus sans être perdus lors d'un redémarrage ou en cas de perte d'alimentation. Vous pouvez stocker la plupart des types de variables dans les versions signées et non signées avec cette bibliothèque.
Dans cet exemple, nous faisons fonctionner le bouton de réinitialisation comme un bouton marche/arrêt pour la LED. Vous pourriez également ajouter le sommeil profond s'il est en mode arrêt pour économiser de l'énergie, mais il y a plus à ce sujet plus tard. Chaque fois que vous appuyez sur le bouton d'alimentation, le Neopixel s'allumera ou s'éteindra selon l'état du basculement.
La bibliothèque Preferences supporte tous les types de variables courants. Pour les entiers, utilisez prefs.putInt("key", 42) et prefs.getInt("key", 0) où le deuxième paramètre est la valeur par défaut si la clé n'existe pas. Pour les entiers non signés, il y a putUInt / getUInt, utile pour les compteurs comme prefs.putUInt("boots", bootCount). Les chaînes de caractères sont stockées avec prefs.putString("wifi_ssid", "MyNetwork") et récupérées avec prefs.getString("wifi_ssid", ""). Pour les valeurs en virgule flottante, utilisez prefs.putFloat("calibration", 1.0523) et prefs.getFloat("calibration", 1.0) — pratique pour les décalages de capteurs. Les valeurs booléennes utilisent prefs.putBool("enabled", true) et prefs.getBool("enabled", false). Pour supprimer une seule clé, appelez prefs.remove("key"), ou pour effacer un espace de noms entier, utilisez prefs.clear(). Chaque espace de noms est limité à 15 caractères et les clés à 15 caractères. Appelez toujours prefs.end() lorsque vous avez terminé pour libérer les ressources.
/* * Mercury NVS Preferences Example * Bascule une valeur (0/1) en mémoire flash à chaque démarrage de la carte. * Si 1 : les LEDs NeoPixel deviennent vertes. Si 0 : les LEDs restent éteintes. * * La valeur persiste à travers les cycles d'alimentation et la reprogrammation. * Réinitialisez en téléchargeant un nouveau code qui efface l'espace de noms. * * Aucune bibliothèque externe requise — Preferences et NeoPixel * sont intégrés au framework Arduino de l'ESP32. */ #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); // Alimenter le NeoPixel pinMode(LEDPOWER, OUTPUT); digitalWrite(LEDPOWER, HIGH); delay(10); pixels.begin(); pixels.clear(); pixels.show(); // Ouvrir l'espace de noms NVS ("demo" peut être n'importe quel nom, jusqu'à 15 caractères) prefs.begin("demo", false); // false = mode lecture/écriture // Lire la valeur stockée (0 par défaut si pas encore sauvegardée) int state = prefs.getInt("toggle", 0); // La basculer int newState = (state == 0) ? 1 : 0; // Sauvegarder la nouvelle valeur en mémoire flash prefs.putInt("toggle", newState); prefs.end(); Serial.println("État précédent : " + String(state)); Serial.println("Nouvel état : " + String(newState)); if (newState == 1) { // Les 4 pixels deviennent verts for (int i = 0; i < 4; i++) { pixels.setPixelColor(i, pixels.Color(0, 30, 0)); } pixels.show(); Serial.println("LEDs : VERTES (réinitialiser pour basculer à l'arrêt)"); } else { Serial.println("LEDs : ÉTEINTES (réinitialiser pour basculer à la marche)"); } } void loop() { // Rien à faire — juste une démonstration du stockage NVS delay(1000); }#pragma once /* * Mercury (ESP32-C6) Pin Definitions * Board-specific GPIO assignments */ // ââ Status LED (NeoPixel) ââ #define LEDPOWER 3 // NeoPixel power (drive HIGH to enable) #define LED 2 // NeoPixel data signal // ââ I2C Bus ââ #define SDA 21 // I2C data #define SCL 22 // I2C clock // ââ Sensor Power ââ #define VACC 20 // Sensor power rail (drive HIGH to enable) // ââ General Purpose Ports ââ #define GP06 6 // GP06 port #define GP07 7 // GP07 port // ââ High Current Output ââ #define OUT1 5 // High current output (e.g. pyro / relay) // ââ Battery Bar LEDs ââ #define BL1 4 // Battery LED 1 (lowest) #define BL2 14 // Battery LED 2 #define BL3 15 // Battery LED 3 #define BL4 18 // Battery LED 4 #define BL5 19 // Battery LED 5 (highest) // ââ Indicators ââ #define DISK 8 // Disk activity LED // ââ Analogue / Detection ââ #define BATIN 0 // Battery voltage (1:1 divider) #define USBDETECT 1 // USB power detect (HIGH = USB present) #define BUTTON 9 // BUTTON on the board, boot button but can be used