2019.04.01
Arduinoには3種類のメモリが存在しています。
1. Flashメモリ(Arduinoのスケッチが格納される)
2. SRAM(スケッチ実行中の変数の読み書きに利用される)
3. ERPROM(電源が切れても値を保持し続ける。ただし読み書き回数に制限がある)
1. Flashメモリ
あまりに大きなプログラムだと格納できません。
開発時にはPCで作成したプログラムをUSBケーブルを通じてこのFlashメモリへ転送されます。
Flashメモリはボードの電源をOFFにしてもプログラムが消える事はありません。
2. SRAM
プログラムで使用する変数の値を一時的に格納する時に利用されます。
電源を切ったら全て消えてしまいます。
電源がOFFになっても記憶しておきたい値はEEPROMに記憶させます。
SRAMを使い切ってしまうと動作が不安定になったり期待通りに動きません。
3. EEPROM
電源がOFFになっても値を保持していく必要がある場合に使用します。
たとえば電源OFF時に覚えておき、次の電源が投入された時にその値を復元したい設定値などに利用します。
Arduino UNOはスペックが低いのでちょっと複雑なものを動かそうとするとプログラムのインストールすらできない時があります。
それに比べて、Arduino M0はUNOに比べれば圧倒的に余裕があります。
Arduino M0は基本的にArduino Unoとはアーキテクチャも異なるとの事で動かないライブラリもありますが、工夫したり動くライブラリを選べば圧倒的に強力です。
Arduino側にSDカードをデフォルトで実装したArduino M0互換の「Crowduino M0-SD」という製品があります。
こちらは ELECROWというメーカーが発売しているのですが、強力なArduino M0のスペックを備えつつ、SDカードリーダーが内臓されています。
SDカードに設定情報を格納して実行環境によってプログラムの動作を変えたい時には、こちらのCrowduino M0-SDを選択するという手があります。
https://www.elecrow.com/crowduino-m0-sd-p-1649.html
●Arduino UNO
Flash 32KB
SRAM 2KB
EEPROM 1KB
●Arduino M0
Flash:256KB
SRAM:32KB
EEPROM:最大16KB(エミュレータ使用時)