M5Stack:ロガー君制作記その③
みりみり作ってる気温ロガー君です。引き続き完成度を高めていきたいとおもいます(∩´∀`)∩☆
前回のその②はこちら
グラフ表示関連
グラフ表示、前回はとりあえずざっと作った形だったので、単にセンサーを読み取るタイミングで1ピクセルづつX軸を右に移動させつつプロットしていたかたちでした。M5Stackの表示は横320ピクセルなので、1秒単位で進めていたら320秒で終わってしまいます。
限界まで行ったら横にスクロールさせる。というのがよくある手だとおもうのですが、今回は320ピクセルまで進んだら、もういっかい一番左のX=0まで戻ってグラフを上書きしていく、昔のオシロスコープ(なんて知らない?w)のような表示にしました。
そうすれば、前の周で計測した値との差がわかりやすいからです。
横のプロットエリア全体を24時間にすれば、前の日のその時間の気温との差がわかって、「ああ、昨日より『暖かい/寒い』ってわかるようになりますでしょ。
がいねんず
ほーらこんだけ暴走しているのに当初のテーマを忘れてない!えらいじぶん!w
(決してスクロール処理が面倒だったからではありませんw)
ちなみに、1日24時間は、24 x 60 x 60 = 86400秒、これを320で割ると、86400 / 320 = 270、270秒ごとに1ピクセル分進むようにすれば、横幅いっぱいで24時間を表示できることになります。
また、書き換わるところに針を表示しておくと、その位置で24時間中のだいたいの時間がわかるアナログ時計的な見かたもできそうです。
↑実際に24時間回しっぱなしにした図。中央付近の▽がカーソルです。前日の同じ時間より気圧が下がっている事がわかります。
右端でカーソルが消えてないですね。修正せねばw
あと、それぞれの縦軸のレンジも適正にしないと変化が細かすぎてわかりにくいですね。。。気温は大体わかりますが気圧って何hPaぐらいが標準でどのくらい変動するものなんでしょうか・・・調べねばw
表示部分積み残し案件メモ
・右端カーソル残り消す
・グラフの縦軸を適正値に(hPaの変化量を調べる)
・(面倒だけどもしできたらうれしい)前日の値を保存して数値表示(差を出すとか?)
・スクリーンセーバにsleepをつかう?(できるか実験しないと)
この段階でのソース
ちょっと計算ミスがあったのでなおしまった((*ノωノ)
ログファイルの整理
ログファイル、記録タイミングの設定次第ですが、ほおっておくとどんどんたまってしまうので、適当なところで過去の情報を削除しないといけません。
最初は単純に日付の切り替わりのポイントで連番の数字のついたファイル名にリネームして、10個ぐらい先を消去するようにすれば10日分のファイルがたまるだけでいいかなとおもったのですが……
↑のSD関係のところを見ると
SD class
・SD.begin()
・SD.exists()
・SD.mkdir()
・SD.open()
・SD.remove()
・SD.rmdir()
なんとこれだけw
うむむぅ、必要最小限になってますねぇ。ファイルのリネームもコピーもできないのかあ。
いったんファイルをオープンして、内容を読み込んでから別の名前で書くようなファイルコピープログラムを作ってそれを回してもいいのですが、ログファイルのようなひょっとしたら大きくなるファイル相手にそういう処理をするのは時間もかかりそうだしちょっと避けたいところ。
ちょっと考えて、書き込まれたファイルをリネームするのではなく、書くファイル名を順に変えていけばいいやと思いつきました。
SD.remove() でファイルを消すことはできるようなので、日付更新の時に新しい名前のファイル名をまず消してからオープンするようにすればいけそうです。
んで、(この間1時間ほど)
できまった。
//保存ログファイルの上限
#define FILE_LOG_MAX 5
↑の値を変えることで最大9日間までログを残せます(2桁にして99日残せるほうがよかったかな?)
ついでのグラフ表示のところに枠をつけて
こんなかんじになりました。(6時間ごとに枠を入れています)
現状までのソースはこちら!☆
たぶん右はじのカーソル残りも治ってると思うけれど、今夜24時に確認してみまーすわー♪