Arduino入門:Flash領域へのデータ格納

ArduinoのSketch(スケッチ)で、データをFlashメモリ(プログラム領域)へ格納する方法を解説します。

変更の必要がない文字列等でデータ量が多い場合、それらを、Flashメモリへ格納する事で、SRAMの負担を減らす事が出来ます。

PROGMEM修飾子

PROGMEM修飾子を変数宣言時に使用する事で、Flashメモリにデータを格納できますが、pgmspace.hライブラリをインクルードする必要があります。また書式は次の2通りです。

注意点としては、pgmspace.hで定義されているデータ型を使う必要がある事です。使用可能なデータ型は次の通りです。浮動小数点数はサポートされていません。
prog_char char (1 byte) -127~128
prog_uchar unsigned char (1 byte) 0~255
prog_int16_t int (2 bytes) -32,767~32,768
prog_uint16_t unsigned int (2 bytes) 0~65,535
prog_int32_t long (4 bytes) -2,147,483,648~2,147,483,647.
prog_uint32_t unsigned long (4 bytes) 0~4,294,967,295

なお、Flashメモリ上のデータは、pgmspace.hで定義されている専用関数で、RAMに読み込むことで、利用できるようになります。

使用例

次のコードは、char型(1バイト)とint型(2バイト)のデータを読み書きする例で、 Arduino公式リファレンスのサンプルとなります。

Creative Commons Attribution-ShareAlike 3.0 License (CC BY-SA 3.0)
Arduino Reference:PROGMEM” by Arduino Team is licensed under CC BY-SA 3.0

次のコードは、文字列の配列をFlashメモリに配置する例で、 Arduino公式リファレンスのサンプルとなります。

Creative Commons Attribution-ShareAlike 3.0 License (CC BY-SA 3.0)
Arduino Reference:PROGMEM” by Arduino Team is licensed under CC BY-SA 3.0
 
→その他のArduino関連情報

Sponsored Link