Rustやっつけフェーズ(3)アナログクロック ボタン操作

前回までで作成したアナログクロックはsdl2ではos時間を表示できるが、wio-terminal上では電源を入れると00:00:00からスタートする。

時計としての役目を果たすには大体でもいいから現在の時刻を表示してほしものである。

ネットワークから時刻を取得する方法もあるはずだが、このお方もおっしゃるとおり、手動の時刻合わせが最低限ほしい。

ということで、今回はボタンを使って時刻合わせを行う。

やっつけフェーズとは

Rustと組込が初心者だという免罪符を掲げ、規約やモダンな書き方に拘らず、動けばいいというフェーズ。

アナログクロック ボタン操作

出来上がり

ボタン操作をするので画面がぶれる。
言い忘れたが、youtubeも初心者である。

デザイン

◾️ボタンの割当て

①上部左と中央ボタンを交互に押す事で針を進める。
②5Wayスイッチに以下を設定。
・左 :時針
・中 :分針
・右 :秒針
・上 :進める方向をプラスに
・下 :進める方向をマイナスに
③現在押してるボタンと直近押されたボタンが同じなら何もしない。

◾main

先人の肩を拝借し以下の構成とする。
atsamd-wio_terminalのexamplesにあるbuttonsのボタンコントロール、ボタンイベントキュー、ボタンインタラプトを拝借し、mainに配置。

◾️wio_buttons

ボタンイベントの判定や、設定の初期化などは別オブジェクトとして作成。

variant付きenumを使ってかっこよく作ってみようと思ったが断念。まだ早すぎたようだ。
そんな残骸が散りばめられている。

main

wio_buttons

コード

相性の悪かったgithub desktopとようやく折り合いがついたので、コードを格納することができた。

wio_buttons

今回はここまで。