Arduino(5) SDカードに保存
はじめに
次はデータ保存するための、SDカードの読み書きを行います。
SDカードのモジュールとしては「HW-203」なるものが手元にありますので、こいつを使用します。こんなやつ。
と思ったら、LANで使用したEthernetシールドにSDカードが付いているじゃないですか。HW-203の実装を検討している中で、スケッチ例を見ているときに、そのうちの一つに記載があって気づきました…。という事で以下はEthernetシールドを使用して実装を進めます。
(写真まではってHW-203の説明かと思いきや、まったく方向転換で違う内容となるのはご容赦ください)
接続
という事でEthernetシールド接続済なので特に説明なし。
ちなみにEthernetシールドで使用するpinは以下の通り。
pin | 内容 | 詳細 |
---|---|---|
4 | SS | SDカード用 |
10 | SS | LAN用 |
11 | MOSI | LAN用 |
12 | MISO | LAN用 |
13 | SCK | LAN用 |
参考にしたスケッチ
・ファイル/スケッチ例/SD/files
ここにはファイルの作成、ファイル有無のチェック、ファイルの削除の処理が記載されています。
・ファイル/スケッチ例/SD/ReadWrite
ここにはファイルへの書き込み、読み出しの処理が記載されています。
実装
まずは動作確認の為に、参考スケッチ2つを合体させました。ただし「setup」にあったSDカードへの読み書きは「Loop」に移動しました。ひたすらSDカードへ書き込み実装です(あくまで動作確認なので…)。
簡単なのでソースコードの記載は無しで。
この状態で「検証・コンパイル」の実施で以下の様な、赤文字が表示されました。
そんな事言われても…。
やはり「動作が不安定になる可能性があります」の通り、動作が不安定になります。警告を無視してSD実装とRTCを合わせて実行すると、LANからの指令で時刻更新が出来なくなったりします。
動作
シリアルモニタにSDカードへの書き込みと、読み出した結果が書き出されるので、自動スクロール設定だと、すごい勢いで流れますが、その状態で通信を行うと、入力値が戻ってきている様なので、とりあえずは動作している様です。
処理中に送ったコマンド
curl -X GET 192.168.1.177:80
その時のシリアルモニタ
コマンド送信側の結果
残件
今回のSD/Eather実装を、以前から作成しているLCD/RTCの実装と合わせたいのですが、ここに来て気づいたのですが、LCD/RTCの実装でも、グローバル変数を45[%]使っている旨のメッセージが表示されており、このままでは確実にメモリ不足な気がします。どうすれば良いのか、とりあえずソースを実際に合体させてみて、その後考えます。
Discussion