как сделоть чтоб при отключении и востанавленни питания даные 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);
}