mirror of
				https://github.com/0xFEEDC0DE64/arduino-esp32.git
				synced 2025-10-31 14:11:42 +01:00 
			
		
		
		
	* enchanced EEPROMClass * Added eeprom examles and modified partition * added eeprom class and extra examples * No changes * No changes * added eeprom class and examples * fixed typo * length() returns user-defined sector size * updated and annotated example
		
			
				
	
	
		
			93 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
|   ESP32 eeprom_class example with EEPROM library
 | |
| 
 | |
|   This simple example demonstrates using EEPROM library to store different data in
 | |
|   ESP32 Flash memory in a multiple user-defined EEPROM partition (0x1000 or 4KB max size or less).
 | |
|   
 | |
|   Install 'ESP32 Partiton Manager' ONCE from https://github.com/francis94c/ESP32Partitions
 | |
|   And generate different partitions with 'partition_name'
 | |
|   Usage: EEPROMClass ANY_OBJECT_NAME("partition_name", size);
 | |
|   
 | |
|   Generated partition that would work perfectly with this example
 | |
|   #Name,   Type, SubType, Offset,   Size,    Flags
 | |
|   nvs,     data, nvs,     0x9000,   0x5000,
 | |
|   otadata, data, ota,     0xe000,   0x2000,
 | |
|   app0,    app,  ota_0,   0x10000,  0x140000,
 | |
|   app1,    app,  ota_1,   0x150000, 0x140000,
 | |
|   eeprom0, data, 0x99,    0x290000, 0x1000,
 | |
|   eeprom1, data, 0x9a,    0x291000, 0x500,
 | |
|   eeprom2, data, 0x9b,    0x292000, 0x100,
 | |
|   spiffs,  data, spiffs,  0x293000, 0x16d000,
 | |
| 
 | |
|   Created for arduino-esp32 on 25 Dec, 2017
 | |
|   by Elochukwu Ifediora (fedy0)
 | |
| */
 | |
| 
 | |
| #include "EEPROM.h"
 | |
| 
 | |
| // Instantiate eeprom objects with parameter/argument names and size same as in the partition table
 | |
| EEPROMClass  NAMES("eeprom0", 0x1000);
 | |
| EEPROMClass  HEIGHT("eeprom1", 0x500);
 | |
| EEPROMClass  AGE("eeprom2", 0x100);
 | |
| 
 | |
| void setup() {
 | |
|   // put your setup code here, to run once:
 | |
|   Serial.begin(115200);
 | |
|   Serial.println("Testing EEPROMClass\n");
 | |
|   if (!NAMES.begin(NAMES.length())) {
 | |
|     Serial.println("Failed to initialise NAMES");
 | |
|     Serial.println("Restarting...");
 | |
|     delay(1000);
 | |
|     ESP.restart();
 | |
|   }
 | |
|   if (!HEIGHT.begin(HEIGHT.length())) {
 | |
|     Serial.println("Failed to initialise HEIGHT");
 | |
|     Serial.println("Restarting...");
 | |
|     delay(1000);
 | |
|     ESP.restart();
 | |
|   }
 | |
|   if (!AGE.begin(AGE.length())) {
 | |
|     Serial.println("Failed to initialise AGE");
 | |
|     Serial.println("Restarting...");
 | |
|     delay(1000);
 | |
|     ESP.restart();
 | |
|   }
 | |
| 
 | |
|   char* name = "Teo Swee Ann";
 | |
|   double height = 5.8;
 | |
|   uint32_t age = 47;
 | |
| 
 | |
|   // Write: Variables ---> EEPROM partitions
 | |
|   NAMES.put(0, name);
 | |
|   HEIGHT.put(0, height);
 | |
|   AGE.put(0, age);
 | |
|   Serial.print("name: ");   Serial.println(name);
 | |
|   Serial.print("height: "); Serial.println(height);
 | |
|   Serial.print("age: ");    Serial.println(age);
 | |
|   Serial.println("------------------------------------\n");
 | |
| 
 | |
|   // Clear variables
 | |
|   name = '\0';
 | |
|   height = 0;
 | |
|   age = 0;
 | |
|   Serial.print("name: ");   Serial.println(name);
 | |
|   Serial.print("height: "); Serial.println(height);
 | |
|   Serial.print("age: ");    Serial.println(age);
 | |
|   Serial.println("------------------------------------\n");
 | |
| 
 | |
|   // Read: Variables <--- EEPROM partitions
 | |
|   NAMES.get(0, name);
 | |
|   HEIGHT.get(0, height);
 | |
|   AGE.get(0, age);
 | |
|   Serial.print("name: ");   Serial.println(name);
 | |
|   Serial.print("height: "); Serial.println(height);
 | |
|   Serial.print("age: ");    Serial.println(age);
 | |
|   
 | |
|   Serial.println("Done!");
 | |
| }
 | |
| 
 | |
| void loop() {
 | |
|   // put your main code here, to run repeatedly:
 | |
| 
 | |
| }
 |