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. Моя цель — сохранить цвет светодиодов для более подходящей перезагрузки.
@Marco Bresson, 👍-1
Обсуждение1 ответ
▲ 0
Оказывается, я просто очень глуп. Я потратил около 7 часов, чтобы все заработало, но все это время я просто выбирал не ту карту.
Извините за беспокойство, ребята :-/
,
@Marco Bresson
Смотрите также:
- Spiffs против Eeprom на esp8266
- Как читать и записывать EEPROM в ESP8266
- Получить доступ к EEPROM ATtiny с помощью кода Arduino?
- В ESP8266 EEPROM сохраненные данные отличаются, когда я пытаюсь их прочитать
- Как исправить код утечки памяти в ESP8266/NodeMCU, вызванный концентрацией строк?
- Значение неинициализированной EEPROM в ESP8266
- Wemos D1 EEProm put/get не получает правильное значение
- Нужна помощь с EEPROM, не сохраняющим значения массива на ESP8266 после перезапуска
Итак, что именно не работает? Вы написали, что 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