Hi all,
so the updated header file would be like this?
//save as EEPROMAnything.h
#include <EEPROM.h>
#include <Arduino.h> // for type definitions
template <class T> int EEPROM_writeAnything(int ee, const T& value)
{
const byte* p = (const byte*)(const void*)&value;
unsigned int i;
for (i = 0; i < sizeof(value); i++){
const byte b = *p;
if( eeprom_read_byte( ( uint8_t* ) ee ) != b )
eeprom_write_byte( ( uint8_t* ) ee++, b ), ++p;
else
ee++, p++;
}
}
template <class T> int EEPROM_readAnything(int ee, T& value)
{
byte* p = (byte*)(void*)&value;
unsigned int i;
for (i = 0; i < sizeof(value); i++)
*p++ = EEPROM.read(ee++);
return i;
}
for use in sketch
#include <EEPROM.h>
#include "EEPROMAnything.h"
unsigned long EEPROM_Data_1; //last saved EEPROM_Data_1 = 1234567
void setup()
{
EEPROM_readAnything(1, EEPROM_Data_1); //Read data starting from ADDR1
EEPROM_Data_1 = (EEPROM_Data_1 + 1);
EEPROM_writeAnything(1, EEPROM_Data_1); //Write data starting from ADDR1, new EEPROM_Data_1 = 1234568
}
//OR without header file
eeprom_read_block((void*)&EEPROM_Data_1, (void*)1, sizeof(EEPROM_Data_1)); //Read data starting from ADDR1
EEPROM_Data_1 = (EEPROM_Data_1 + 1);
eeprom_write_block((const void*)&EEPROM_Data_1, (void*)1, sizeof(EEPROM_Data_1)); //Write data starting from ADDR1
*/
tnx!