ESP8266 RTC Memoryの使い方

以下ESP8266のドキュメントによると、RTCメモリを使用することにより、ディープスリープ前に定義した変数をスリープ復帰後でも保持することができます(電源OFFでクリアされます)。

https://arduino-esp8266.readthedocs.io/en/2.4.1/libraries.html#esp-specific-apis

書込:ESP.rtcUserMemoryWrite(offset, &data, sizeof(data))
読込:ESP.rtcUserMemoryRead(offset, &data, sizeof(data))

上記クラスは型がboolです。読込の際は変数を定義せず、上記クラスをそのまま記述して下さい。
offset, &data, sizeof(data)は全て4バイト(uint32_t)型となります。

ex)
uint32_t offset = 0;
uint32_t data1 = 12345;
// 書込
ESP.rtcUserMemoryWrite(offset, &data1, sizeof(data1)) ;
// 読込
ESP.rtcUserMemoryRead(offset, &data1, sizeof(data1));

格納するデータが複数あるときは、offsetを4バイトずつシフトさせて書込みます。

ex)
uint32_t data2 = 54321;
// 書込
ESP.rtcUserMemoryWrite(offset+4, &data2, sizeof(data2)) ;
// 読込
ESP.rtcUserMemoryRead(offset+4, &data2, sizeof(data2));

ユーザに割り当てられたRTCメモリー空間は512バイトのため、格納できるデータは最大512/4=64データとなります。