2021年3月24日水曜日

CO2センサで遊ぶ(その6、UIと内部処理見直し)

CO2測定器のUIと内部処理を見直しました。UIは従来のものに加え、リング状の中に濃度を表示してみました。少しはカッコよくなったか。下記は1,000ppm未満なので緑色のリングですが、濃度に応じてリングの色が変わります。


太い線の円は描けないので、半径を変えて複数描画しています。これだけだと太くはなるのですがモアレが表示されてしまうので、中心点も移動しながら塗りつぶせるように描画しています。当初、塗りつぶしで大きな円を描き、小さめの円を黒塗りしていたのですが、書き換え時に一瞬大きな円の塗りつぶしが表示されるのが見えてしまうので、このようにしました。

このデザインは、給湯器のリモコン画面をパクり参考にしました。濃度に応じて扇型で表示したかったのですが、利用しているAdafruit_GFXライブラリで扇型を表示できないようなので、単純なリング形状にしました。


内部処理の見直しは、これまでmillis()関数で前回測定から10秒経過したかを判断していましたが、タイマー割り込みを使って時間をカウントするようにしました。10ms毎の割り込みでタッチスイッチの状態確認(チャタリング排除のためのサンプリングですが、タッチスイッチでは意味はないかな)をし、その中で1,000カウントすることで10秒を測っています。

下記は本日のダイニングのCO2濃度で、右端が17:45頃です。11時間前あたり(朝6:30頃)に4,000ppmのピークがでていますが、これは朝方寒くてファンヒータをつけたことによるものです。


なお、グラフ表示時のY軸(ppm)は最大値に応じて1,000ppm毎に自動調整するようになっています。上記は4,000ppmを越えていたので最大が5,000ppmの軸になっています。

これでプログラムはほぼ完了とします。コードを少しキレイにして、この週末あたりに回路図と共に公開予定です。需要はあるか分かりませんが。

0 件のコメント:

コメントを投稿