#include <EEPROM.h>
int address = 0;
struct StrInt {
int Val1;
int Val11;
};
struct StrFloat {
float Val2;
float Val22;
};
struct StrChar {
char Val3;
char Val33;
};
// Функция для получения размера структуры в байтах
template <typename T>
int getSizeOfStruct() {
return sizeof(T);
}
// Функция для записи структуры в EEPROM
template <typename T>
void writeToEEPROM(int address, T& data) {
EEPROM.put(address, data);
}
// Функция для чтения структуры из EEPROM
template <typename T>
void readFromEEPROM(int address, T& data) {
EEPROM.get(address, data);
}
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
StrInt srtint = {12, 24};
StrFloat strfloat = {16.2, 33.44};
StrChar strchar = {'a', 'd'};
Serial.print("Size of StrInt: ");
Serial.println(getSizeOfStruct<StrInt>());
Serial.print("Size of StrFloat: ");
Serial.println(getSizeOfStruct<StrFloat>());
Serial.print("Size of StrChar: ");
Serial.println(getSizeOfStruct< StrChar>());
int address = 0;
writeToEEPROM(address, srtint);
address += sizeof(StrInt);
writeToEEPROM(address, strfloat);
address += sizeof(StrFloat);
writeToEEPROM(address, strchar);
// Читаем данные из EEPROM
StrInt readStrInt;
StrFloat readStrFloat;
StrChar readStrChar ;
address = 0;
readFromEEPROM(address, readStrInt);
address += sizeof(StrInt);
readFromEEPROM(address, readStrFloat);
address += sizeof(StrFloat);
readFromEEPROM(address, readStrChar);
// Выводим прочитанные данные
Serial.print("Read StrInt: ");
Serial.print(readStrInt.Val1 );
Serial.print(", ");
Serial.println(readStrInt.Val11);
Serial.print("Read StrFloat: ");
Serial.print(readStrFloat.Val2);
Serial.print(", ");
Serial.println(readStrFloat.Val22);
Serial.print("Read StrChar: ");
Serial.print( readStrChar.Val3);
Serial.print(", ");
Serial.println(readStrChar.Val33);
}
void loop() {
}