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