Skip to content

Library for I2C EEPROM 24LC256/64/32/16/08/04/02/01 like ESP32 Preferences

License

Notifications You must be signed in to change notification settings

rubegartor/EEPROM_Preferences

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EEPROM_Preferences (WIP)

Arduino Library for I2C EEPROM - 24LC256/64/32/16/08/04/02/01.

Description

This library allows to interact with external I2C EEPROM in the style of the ESP32 Preferences.h library, avoiding the user having to manage the memory addresses.

Example

#include <EEPROM_Preferences.h>

EEPROM_Preferences preferences(0x50, EEPROM_24LC256);

void setup() {
  Serial.begin(115200);

  preferences.begin();

  preferences.writeBool("bool", true);
  Serial.println(preferences.getBool("bool", false));

  preferences.writeString("welcome", "Hello word");
  Serial.println(preferences.getString("welcome", ""));
}

void loop() {
}

Connection diagram

3.3V and 5V can be used!

Connection diagram

Interface

Constructor

EEPROM_Preferences(const uint8_t deviceAddress, const uint16_t deviceSize, TwoWire *wire = &Wire);

Initialization

  • Initializes the eeprom and configures the write protection pin if necessary
void begin(int8_t writeProtectPin = -1);

Read methods

  • Obtains a string through a key, if the key is not found in memory, it will return the default value indicated in the second parameter
char* getString(const char* key, const char* defaultValue);
  • Obtains an int through a key, if the key is not found in memory, it will return the default value indicated in the second parameter
int getInt(const char* key, int defaultValue);
  • Obtains an uint through a key, if the key is not found in memory, it will return the default value indicated in the second parameter
int getUInt(const char* key, int defaultValue);
  • Obtains a float through a key, if the key is not found in memory, it will return the default value indicated in the second parameter
float getFloat(const char* key, float defaultValue);
  • Obtains a bool through a key, if the key is not found in memory, it will return the default value indicated in the second parameter
bool getBool(const char* key, bool defaultValue);

Write methods

  • Writes a string to memory using the specified key
StatusCode writeString(const char* key, const char* value);
  • Writes an int to memory using the specified key
StatusCode writeInt(const char* key, int32_t value);
  • Writes an uint to memory using the specified key
StatusCode writeUInt(const char* key, uint32_t value);
  • Writes a float to memory using the specified key
StatusCode writeFloat(const char* key, float value);
  • Writes a bool to memory using the specified key
StatusCode writeBool(const char* key, bool value);

Others

  • Removes string record by value from memory and reallocate memory
StatusCode removeString(const char* key);
  • Removes int record by value from memory and reallocate memory
StatusCode removeInt(const char* key);
  • Removes uint record by value from memory and reallocate memory
StatusCode removeUInt(const char* key);
  • Removes bool record by value from memory and reallocate memory
StatusCode removeBool(const char* key);
  • Removes float record by value from memory and reallocate memory
StatusCode removeFloat(const char* key);
  • Enable write protection mode on the memory
void enableWrite();
  • Disable write protection mode on the memory
void disableWrite();
  • Completely clears the memory (it takes some time to perform this operation)
bool freeEEPROM();
  • Dumps register data from EEPROM, address should be multiple of 32
const char* dumpRecord(uint16_t address);

StatusCode

Code Text
0 No errors found
1 Memory is full
2 Key not found (only on remove)
3 Key length overflow (only on write)
4 Data length overflow (only on write)
5 Memory is write protected

To-Do

  • Add support to all 24LCXXX memories (only tested with 24LC256)

Credits

Inspired by RobTillaart's I2C_EEPROM library (https://github.com/RobTillaart/I2C_EEPROM) and ESP32 Preferences library

About

Library for I2C EEPROM 24LC256/64/32/16/08/04/02/01 like ESP32 Preferences

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages