Inicie sessão na sua conta Altimeter Cloud
Não tem conta? Criar uma
Enviaremos um link de confirmação por e-mail. Verifique a pasta de spam se não o receber.
Já tem uma conta? Entrar
A biblioteca NVS / Preferences permite armazenar configurações e fragmentos de informações na partição NVS na memória flash. Isso significa que essas configurações podem ser definidas e lidas sem serem perdidas quando reiniciadas ou se a energia for cortada. Você pode armazenar a maioria dos tipos de variáveis em versões assinadas e não assinadas com essa biblioteca.
Neste exemplo, fazemos o botão de reset funcionar como um botão on/off para o led. Você também poderia adicionar deep sleep se estiver no modo off para economizar energia, mas há mais sobre isso depois. Cada vez que você pressiona o botão de energia, o Neopixel será ligado ou desligado dependendo do estado de alternância.
A biblioteca Preferences suporta todos os tipos de variáveis comuns. Para inteiros, use prefs.putInt("key", 42) e prefs.getInt("key", 0) onde o segundo parâmetro é o padrão se a chave não existir. Para inteiros sem sinal, há putUInt / getUInt, útil para contadores como prefs.putUInt("boots", bootCount). Strings são armazenadas com prefs.putString("wifi_ssid", "MyNetwork") e recuperadas com prefs.getString("wifi_ssid", ""). Para valores de ponto flutuante, use prefs.putFloat("calibration", 1.0523) e prefs.getFloat("calibration", 1.0) — útil para offsets de sensor. Valores booleanos usam prefs.putBool("enabled", true) e prefs.getBool("enabled", false). Para remover uma chave única, chame prefs.remove("key"), ou para limpar um namespace inteiro, use prefs.clear(). Cada namespace é limitado a 15 caracteres e chaves a 15 caracteres. Sempre chame prefs.end() quando terminar para liberar recursos.
/* * Exemplo de Preferences NVS Mercury * Alterna um valor (0/1) na memória flash a cada vez que a placa inicia. * Se 1: LEDs NeoPixel ficam verdes. Se 0: LEDs permanecem desligados. * * O valor sobrevive a ciclos de energia e reprogramação. * Reinicie enviando novo código que limpe o namespace. * * Nenhuma biblioteca externa necessária — Preferences e NeoPixel * estão integrados no framework Arduino 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); // Ligar NeoPixel pinMode(LEDPOWER, OUTPUT); digitalWrite(LEDPOWER, HIGH); delay(10); pixels.begin(); pixels.clear(); pixels.show(); // Abrir namespace NVS ("demo" pode ser qualquer nome, até 15 caracteres) prefs.begin("demo", false); // false = modo leitura/escrita // Ler o valor armazenado (padrão é 0 se ainda não foi salvo) int state = prefs.getInt("toggle", 0); // Invertê-lo int newState = (state == 0) ? 1 : 0; // Salvar o novo valor na memória flash prefs.putInt("toggle", newState); prefs.end(); Serial.println("Estado anterior: " + String(state)); Serial.println("Novo estado: " + String(newState)); if (newState == 1) { // Todos os 4 pixels verdes for (int i = 0; i < 4; i++) { pixels.setPixelColor(i, pixels.Color(0, 30, 0)); } pixels.show(); Serial.println("LEDs: VERDE (reinicie para alternar para desligado)"); } else { Serial.println("LEDs: DESLIGADO (reinicie para alternar para ligado)"); } } void loop() { // Nada a fazer — apenas demonstrando armazenamento NVS delay(1000); }#pragma once /* * Definições de Pinos Mercury (ESP32-C6) * Atribuições de GPIO específicas da placa */ // ââ LED de Status (NeoPixel) ââ #define LEDPOWER 3 // Energia do NeoPixel (dirigir ALTO para habilitar) #define LED 2 // Sinal de dados do NeoPixel // ââ Barramento I2C ââ #define SDA 21 // Dados I2C #define SCL 22 // Relógio I2C // ââ Energia do Sensor ââ #define VACC 20 // Trilho de energia do sensor (dirigir ALTO para habilitar) // ââ Portas de Uso Geral ââ #define GP06 6 // Porta GP06 #define GP07 7 // Porta GP07 // ââ Saída de Alto Corrente ââ #define OUT1 5 // Saída de alto corrente (por exemplo, pirotecnia / relé) // ââ LEDs de Barra de Bateria ââ #define BL1 4 // LED de Bateria 1 (mais baixo) #define BL2 14 // LED de Bateria 2 #define BL3 15 // LED de Bateria 3 #define BL4 18 // LED de Bateria 4 #define BL5 19 // LED de Bateria 5 (mais alto) // ââ Indicadores ââ #define DISK 8 // LED de atividade de disco // ââ Analógico / Detecção ââ #define BATIN 0 // Tensão da bateria (divisor 1:1) #define USBDETECT 1 // Detecção de energia USB (ALTO = USB presente) #define BUTTON 9 // BOTÃO na placa, botão de inicialização, mas pode ser usado