// Работает на ESP32
#include <EEPROM.h>
// #include <eeprom.h>
const int LED_RED = 12;
// === EEPROM ===
// uint16_t dataWrite = 271;
uint8_t dataWrite = 185;
uint8_t dataRead = 0;
uint8_t H_Data_bit = 0;
uint8_t L_Data_bit = 0;
// Структури
struct MyStruct {
byte bright = 0;
int counter = 0;
float fvalue = 0;
};
// глобальный экземпляр для личного использования
MyStruct myStruct;
void setup() {
#if defined(__AVR__) // ATMEGA
Serial.begin(9600);
#else // ESP32 and Other
Serial.begin(115200);
EEPROM.begin(100); // для esp8266/esp32 с указанием максимального объёма памяти: 4.. 4096 Байт.
#endif
pinMode(LED_RED, OUTPUT);
Serial.println("ESP32! Yupiter");
// пишем 200 по адресу 10
// EEPROM.update(10, dataWrite);
EEPROM.write(10, dataWrite);
EEPROM.commit(); // для esp8266/esp32 Для применения записи
dataRead = EEPROM.read(10);
Serial.println(dataRead); // выведет 200
// Serial.println(EEPROM[10]); // ERROR!!!
// Теперь посмотрим, как работает put() и get():
float dataF = 3.14;
int16_t dataI = -634;
byte dataArray[] = {10, 20, 30, 40};
EEPROM.put(0, dataF);
EEPROM.put(4, dataI);
EEPROM.put(20, dataArray);
EEPROM.commit(); // для esp8266/esp32
float dataF_read = 0;
int16_t dataI_read = 0;
byte dataArray_read[4];
// // читаем точно так же, как писали
EEPROM.get(0, dataF_read);
EEPROM.get(4, dataI_read);
EEPROM.get(20, dataArray_read);
// // проверяем
Serial.println(dataF_read);
Serial.println(dataI_read);
Serial.println(dataArray_read[0]);
Serial.println(dataArray_read[1]);
Serial.println(dataArray_read[2]);
Serial.println(dataArray_read[3]);
// Структури
Serial.println("myStruct:");
// EEPROM.get(30, myStruct); // прочитать из адреса 0
// меняем
myStruct.bright = 22;
myStruct.counter = 5678;
myStruct.fvalue = 6.66;
int myVal = 0;
float myValF = 0;
EEPROM.put(30, myStruct); // поместить в EEPROM по адресу 0
// EEPROM.get(30, myStruct); // прочитать из адреса 0
// EEPROM.get(30, myVal); // прочитать из адреса 30 byte = 22 (4bytes)
// EEPROM.get(34, myVal); // прочитать из адреса 34 int = 5678 (4bytes)
EEPROM.get(38, myValF); // прочитать из адреса 38 float = 6.66 (4bytes)
Serial.println(myValF); // 22
// Serial.println(myStruct.bright);
// Serial.println(myStruct.counter);
// Serial.println(myStruct.fvalue);
}
void loop() {
if(Serial.available()) {
char str[20];
int len = Serial.readBytes(str, 20); // по факту на 2 знака меньше нужно кидать
str[len] = 0; // завершающий символ, добавляем вручную
// записываем
// EEPROM.put(STR_ADDR, str);
Serial.print("Save text: ");
Serial.println(str);
}
digitalWrite(LED_RED, HIGH);
delay(200);
digitalWrite(LED_RED, LOW);
delay(500);
}
// float dataF = 3.14;
// int16_t dataI = -634;
// byte dataArray[] = {10, 20, 30, 40};
// EEPROM.put(0, dataF);
// EEPROM.put(4, dataI);
// EEPROM.put(6, dataArray);
// //EEPROM.commit(); // для esp8266/esp32
// // объявляем переменные, куда будем читать
// float dataF_read = 0;
// int16_t dataI_read = 0;
// byte dataArray_read[4];
// // читаем точно так же, как писали
// EEPROM.get(0, dataF_read);
// EEPROM.get(4, dataI_read);
// EEPROM.get(6, dataArray_read);
// // проверяем
// Serial.println(dataF_read);
// Serial.println(dataI_read);
// Serial.println(dataArray_read[0]);
// Serial.println(dataArray_read[1]);
// Serial.println(dataArray_read[2]);
// Serial.println(dataArray_read[3]);
// }
// void loop() {
// // put your main code here, to run repeatedly:
// }
// //Запись в память перед сном one_way
// EEPROM_write (5, (unsigned char) one_way); //L
// unsigned char data_H = one_way >> 8;
// EEPROM_write (4, data_H); //H
// count_wheel = 0;
// rotate_time = 0;
// //==EEPROM_READ===
// unsigned char data_H = EEPROM_read (4); //last_one_way H
// unsigned char data_L = EEPROM_read (5); //last_one_way L
// last_one_way = (data_H << 8);
// last_one_way += data_L; //last_one_way
// data_H = 0;
// data_L = 0;
// one_way = last_one_way;
// data_H = EEPROM_read (6); //last_total_way H
// data_L = EEPROM_read (7); //last_total_way L
// last_total_way = (data_H << 8);
// last_total_way += data_L; //last_total_way
// data_H = 0;
// data_L = 0;
// //==EEPROM==
// //==EEPROM_READ===
// unsigned char dat_H = EEPROM_read (4); //last_one_way H
// unsigned char dat_L = EEPROM_read (5); //last_one_way L
// last_one_way = (dat_H << 8);
// last_one_way += dat_L; //last_one_way
// dat_H = 0;
// dat_L = 0;
// one_way = last_one_way;
// dat_H = EEPROM_read (6); //last_total_way H
// dat_L = EEPROM_read (7); //last_total_way L
// last_total_way = (dat_H << 8);
// last_total_way += dat_L; //last_total_way
// dat_H = 0;
// dat_L = 0;
// //=EEPROM==