eeprom_class

はじめに

基本的なEEPROMクラスの使い方です。EEPROMClassのオブジェクトを作成し、EEPROM用のバッファを操作します。

プログラム

定義等

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
/*
  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 class objects.
  
  Created for arduino-esp32 on 25 Dec, 2017
  by Elochukwu Ifediora (fedy0)
  converted to nvs by lbernstone - 06/22/2019
*/

#include "EEPROM.h"

// Instantiate eeprom objects with parameter/argument names and sizes
EEPROMClass  NAMES("eeprom0");
EEPROMClass  HEIGHT("eeprom1");
EEPROMClass  AGE("eeprom2");

EEPROMClassのオブジェクトを3つ作成します。EEPROMClassは、EEPROMを操作するためのクラスです。

setup()

18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
void setup() {
  Serial.begin(115200);
  delay(1000);
  Serial.println("Testing EEPROMClass\n");
  if (!NAMES.begin(0x500)) {
    Serial.println("Failed to initialise NAMES");
    Serial.println("Restarting...");
    delay(1000);
    ESP.restart();
  }
  if (!HEIGHT.begin(0x200)) {
    Serial.println("Failed to initialise HEIGHT");
    Serial.println("Restarting...");
    delay(1000);
    ESP.restart();
  }
  if (!AGE.begin(0x100)) {
    Serial.println("Failed to initialise AGE");
    Serial.println("Restarting...");
    delay(1000);
    ESP.restart();
  }

  const char* name = "Teo Swee Ann";
  char rname[32];
  double height = 5.8;
  uint32_t age = 47;

  // Write: Variables ---> EEPROM stores
  NAMES.writeString(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
  rname[0] = '\0';
  height = 0;
  age = 0;
  Serial.print("name: ");   Serial.println(rname);
  Serial.print("height: "); Serial.println(height);
  Serial.print("age: ");    Serial.println(age);
  Serial.println("------------------------------------\n");

  // Read: Variables <--- EEPROM stores
  NAMES.get(0, rname);
  HEIGHT.get(0, height);
  AGE.get(0, age);
  Serial.print("name: ");   Serial.println(rname);
  Serial.print("height: "); Serial.println(height);
  Serial.print("age: ");    Serial.println(age);
  
  Serial.println("Done!");
}

22、28、34行目で、EEPROMClassの変数に対して、begin()を呼び出しています。 begin()に渡す引数は、確保するサイズです。

41、42、43、44行目で、様々な型のデータを定義しています。

47行目では、writeString()メソッドを呼び出し、メモリ上のバッファに値を書き込んでいます。48、49行目では、put()メソッドを呼び出し、メモリ上のバッファに値を書き込んでいます。ここで書き込んだ値を、65、66、67行目のget()メソッドで読み出しています。

実際にEEPROMに書き込むには、commitメソッドもしくは、endメソッドを呼び出す必要があると思います。

loop()

75
76
77
void loop() {
  delay(0xFFFFFFFF);
}

delay()を呼び出します。何もしていません。

バージョン

Hardware:ESP-WROOM-32
Software:Arduino core for the ESP32 2.0.4

最終更新日

September 4, 2022

inserted by FC2 system