Program Resource

開発者向け各種コード、アルゴリズム、リソース情報ライブラリ もしくはねふぁの覚え書き

ESP系ではデータの保存用にSPIFFSが利用できるが、ちょっとしたデータの保存にはArduinoの様にEEPROMへの保存がお手軽である。正確にはフラッシュメモリに保存する疑似EEPROMであるが、ほぼ同じスケッチで扱える。ESP32の場合疑似EEPROMの最大サイズは4KB。

ArduinoのEEPROMの記事も参考に。

ESP系でEEPROMを使う場合、Arduinoと違うのはsetupでEERPOMのサイズを指定して初期化を行うのと、writeやputの後にcommitを実行する事である。それ以外は同じ。

上記ArduinoのEEPROMサンプルスケッチをESP系にすると以下の様になる。

#include <EEPROM.h>

#define DEFAULT_VALA	10
#define DEFAULT_VALB	20
#define DATA_VERSION	"DATA1.0"

struct DATA_SET{
	int vala;
	int valb;
	char check[10];
};
DATA_SET data;

//データをEEPROMから読み込む。保存データが無い場合デフォルトにする。
void load_data() {
	EEPROM.get<DATA_SET>(0, data);
	if (strcmp(data.check, DATA_VERSION)) { //バージョンをチェック
		//保存データが無い場合デフォルトを設定
		data.vala = DEFAULT_VALA;
		data.valb = DEFAULT_VALB;
	}
}

//EEPROMへの保存
void save_data() {
	//EEPROMに設定を保存する。
	strcpy(data.check, DATA_VERSION);
	EEPROM.put<DATA_SET>(0, data);
	EEPROM.commit(); //大事
}

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

	EEPROM.begin(1024); //1kbサイズ
	load_data();
	data.vala++;
	save_data();

	Serial.println(data.vala);
}

void loop() {
}

コメントを残す

メールアドレスが公開されることはありません。


*

CAPTCHA