EEPROM не соответствует перезагрузке

Я использую Wemos D1 mini V3.0.0 (ядро esp 8266).

Я попытался сохранить структуру в памяти EEPROM, но все данные были потеряны при перезагрузке платы.

Я использую следующие основные функции:

int cle_verif = 519; // ключ подтверждения

struct sauvegarde_data {
  int cle; // ключ подтверждения
  int mode_ecl; //вар
  int r; //вар
  int v; //вар
  int b; //вар
};
sauvegarde_data customVar;

void sauvegardeEEPROM() {
  EEPROM.put(0, customVar);
  EEPROM.commit();
}

void chargeEEPROM() {
  // Горит память EEPROM
  EEPROM.get(0, customVar);
  Serial.println("");
  Serial.println("cle : "+String(customVar.cle));
  Serial.println("mode eclairage : "+String(customVar.mode_ecl));
  Serial.println("r : "+String(customVar.r));
  Serial.println("v : "+String(customVar.v));
  Serial.println("b : "+String(customVar.b));
  if(customVar.cle != cle_verif){ // проверяем правильность ключа
    initialiserEEPROM();
  }
}

void initialiserEEPROM(){
  // Ценность по умолчанию
  customVar.cle=cle_verif;
  customVar.mode_ecl=0;
  customVar.r=15;
  customVar.v=15;
  customVar.b=15;
  sauvegardeEEPROM();
}

а затем я запустил следующий код для инициализации памяти EEPROM со значениями по умолчанию:

EEPROM.begin(128);
initialiserEEPROM(); // инициализация
customVar.b=2; // изменить значение кэшированной переменной
chargeEEPROM(); // чтение памяти EEPROM

выходной файл customVar.b=15 является правильным и означает, что он был сохранен в EEPROM.

Есть идеи?

Хорошего дня.

PS: я использую четыре библиотеки: FastLed, EEPROM, ESP8266WiFi, ESP8266WebServer. Моя цель — сохранить цвет светодиодов для более подходящей перезагрузки.

, 👍-1

Обсуждение

Итак, что именно не работает? Вы написали, что 15 сохранено правильно ... пожалуйста, также выложите код настройки и цикла (хотя бы те части, которые имеют значение), @Sim Son

Я не вижу EEPROM.begin(). https://arduino-esp8266.readthedocs.io/en/latest/libraries.html#eeprom, @Juraj

Привет, мой код цикла не очень актуален, так как это всего лишь server.handle. Затем я получаю аргумент по поводу веб-страницы, которая обновляет eeprom с помощью sauvegardeEEPROM(); функция, но это все, @Marco Bresson

EEPROM.begin был в моей функции настройки, извините :-/ Я отредактировал сообщение, чтобы вы могли его увидеть :-), @Marco Bresson

Часть, которая не работает, когда я перезагружаю карту, все сохраненные данные теряются., @Marco Bresson


1 ответ


0

Оказывается, я просто очень глуп. Я потратил около 7 часов, чтобы все заработало, но все это время я просто выбирал не ту карту.

Извините за беспокойство, ребята :-/

,