Not tested, but it does show the basics; use of c-string for the (fixed size) id variable.
#include <EEPROM.h>
// address in eeprom where records are stored
#define BASEADDRESS 0
struct UDT_SETTINGS {
int16_t PHop_Min; // 0 to PHop_Max
int16_t PHop_Max; // PHop_Min to 100
bool PHop_Rev; // 0 = Normal, 1 = Reversed
int16_t SHop_Min; // 0 to SHop_Max
int16_t SHop_Max; // SHop_Min to 100
bool SHop_Rev; // 0 = Normal, 1 = Reversed
int16_t Rud_Rng; // 0 to Rud_Max
int16_t Rud_Trim; // -Range to +Range
bool Rud_Rev; // 0 = Normal, 1 = Reversed
int16_t Thr_Rng; // 0 to Thr_Max
int16_t Thr_Trim; // +/- 20
bool Thr_Rev; // 0 = Normal, 1 = Reversed
int16_t Hook_Rel; // 1 to 10 S
float Batt_Volts; // 7 - 15 V
char id[5]; // this is last to catch structure changes <-------- 4 characters and nul terminator
};
// for demo purposes, two records (an array would have been better)
UDT_SETTINGS settings1;
UDT_SETTINGS settings2;
void setup()
{
// save first record to eeprom
EEPROM.put(BASEADDRESS, settings1);
// save second record to eeprom
EEPROM.put(BASEADDRESS + sizeof(UDT_SETTINGS), settings2);
// read first record from eeprom
EEPROM.get(BASEADDRESS, settings1);
// read second record from eeprom
EEPROM.get(BASEADDRESS + sizeof(UDT_SETTINGS), settings2);
}
void loop()
{
}