Как сделоть автосахронения на val и val1

как сделоть чтоб при отключении и востанавленни питания даные val и val1 сохранились

/***********Blynk***********/
  #define BLYNK_TEMPLATE_ID  "TMdy"
  #define BLYNK_TEMPLATE_NAME  "Quicmplate"
  #define BLYNK_AUTH_TOKEN  "pYEp"
  #define BLYNK_PRINT Serial      
  char ssid[] = "Sil";
  char pass[] = "mushex077petr";
/**********Library**********/
  #include <WiFi.h>
  #include <WiFiClient.h>
  #include <BlynkSimpleEsp32.h>
  #include <GyverEncoder.h>
  #include <EEPROM.h>
  #define EEPROM_ADDR_VAL 0      // Address to store val
  #define EEPROM_ADDR_VAL1 4     // Address to store val1
/********Blynk timer********/
  BlynkTimer timer;

  float val = 0;
  float val1 = 0;
  
  void myTimerEvent() //Эта функция ежесекундно отправляет время
  {
    Blynk.virtualWrite(V2, millis() / 1000);
    Blynk.virtualWrite(V1, val);  // Assuming V1 is the virtual pin for val
    Blynk.virtualWrite(V3, val1); // Assuming V3 is the virtual pin for val1
  }
/***********Ky-040**********/
  #define CLK_PIN 23  
  #define DT_PIN 22  
  #define CLK_PIN1 21 
  #define DT_PIN1 19  
  Encoder enc(CLK_PIN, DT_PIN);
  Encoder enc1(CLK_PIN1, DT_PIN1);
/************Rele***********/
  #define Rele_1 12 //GV
  #define Rele_3 13 //GN
  #define Rele_2 2 //MV  
  #define Rele_4 4 //MN
void setup()
{
  delay(1500);
  Serial.begin(9600);  
  pinMode(Rele_1, OUTPUT);
  pinMode(Rele_2, OUTPUT);
  pinMode(Rele_3, OUTPUT);
  pinMode(Rele_4, OUTPUT);
  digitalWrite(Rele_1, LOW);
  digitalWrite(Rele_2, LOW);
  digitalWrite(Rele_3, LOW);
  digitalWrite(Rele_4, LOW);
  digitalWrite(Rele_1, HIGH);
  digitalWrite(Rele_2, HIGH);
  digitalWrite(Rele_3, HIGH);
  digitalWrite(Rele_4, HIGH); 
  /////////////////-Blynk-///////////////
  Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
  // Настройте функцию, которая будет вызываться каждую секунду
  timer.setInterval(1000L, myTimerEvent);

  enc.setType(TYPE2);
  enc1.setType(TYPE2);

  // Read values from EEPROM
  EEPROM.get(EEPROM_ADDR_VAL, val);
  EEPROM.get(EEPROM_ADDR_VAL1, val1);
}

void loop()
{
  Blynk.run();
  timer.run();

  enc.tick();
  enc1.tick();
  if (enc.isTurn()) {
    if (enc.isRight()) {
      val +=0.5;
      if (val > 100) {
        val = 100;
      }
    }
    if (enc.isLeft()) {
      val -=0.5;
      if (val < 0) {
        val = 0;
      }
    }
  }
  
  if (enc1.isTurn()) {
    if (enc1.isRight()) {
      val1+=0.5;
      if (val1 > 100) {
        val1 = 100;
      }
    }
    if (enc1.isLeft()) {
      val1-=0.5;
      if (val1 < 0) {
        val1 = 0;
      }
    }
  }  
  // Update EEPROM values
  EEPROM.put(EEPROM_ADDR_VAL, val);
  EEPROM.put(EEPROM_ADDR_VAL1, val1);
}

This is going to kill your ESP32’s EEPROM memory very quickly, as most EEPROM is good for an average of 100,000 write operations. This code could kill those memory locations in a few seconds.

You could use LifttleFS, but as you’re writing these value to the Blynk server then you can refrieve them by using…

BLYNK_CONNECTED()
{
  Blynk.syncVirtual(V1);
  Blynk.syncVirtual(V3);
}

BLYNK_WRITE(V1)
{
  val = param.asfloat();
}

BLYNK_WRITE(V3)
{
  val1 = param.asfloat();
}

Pete.

спасибо ваш савет мне памог устанить праблему. я вас очень блогадарен :wink: