#include <EEPROM.h>
struct MyData {
int intValue;
float floatValue;
char name[10];
};
void setup() {
Serial.begin(9600);
while (!Serial) {}
Serial.println("EEPROM Demo Starting...");
// ---------------------------
// 1. EEPROM size
// ---------------------------
Serial.print("EEPROM size: ");
Serial.println(EEPROM.length());
// ---------------------------
// 2. WRITE (raw byte)
// ---------------------------
EEPROM.write(0, 123); // writes 1 byte (0–255)
Serial.println("EEPROM.write(0, 123)");
// ---------------------------
// 3. READ (raw byte)
// ---------------------------
byte val = EEPROM.read(0);
Serial.print("EEPROM.read(0): ");
Serial.println(val);
// ---------------------------
// 4. UPDATE (only writes if different)
// ---------------------------
EEPROM.update(0, 200);
Serial.println("EEPROM.update(0, 200)");
Serial.print("After update: ");
Serial.println(EEPROM.read(0));
// ---------------------------
// 5. PUT (write struct / multi-byte data)
// ---------------------------
MyData dataToWrite = {42, 3.14, "Arduino"};
EEPROM.put(10, dataToWrite);
Serial.println("EEPROM.put() wrote struct at address 10");
// ---------------------------
// 6. GET (read struct / multi-byte data)
// ---------------------------
MyData dataRead;
EEPROM.get(10, dataRead);
Serial.println("EEPROM.get() result:");
Serial.print("intValue: ");
Serial.println(dataRead.intValue);
Serial.print("floatValue: ");
Serial.println(dataRead.floatValue);
Serial.print("name: ");
Serial.println(dataRead.name);
// ---------------------------
// 7. LOOP through EEPROM
// ---------------------------
Serial.println("First 20 bytes of EEPROM:");
for (int i = 0; i < 20; i++) {
Serial.print("Addr ");
Serial.print(i);
Serial.print(": ");
Serial.println(EEPROM.read(i));
}
Serial.println("Done.");
}
void loop() {
// nothing here
}