Rustやっつけフェーズ(1)アナログクロック

2021/8頃、「基礎から学ぶ組込みRust」という本を買ってRustと組込を始めた。 一通り書いてあるサンプルを作ってwio-terminalで動かしてみて非常に面白かった。

これを手足のように使えるようしたいため、先人の肩を借りていくつか自作ものを作っていく。

やっつけフェーズとは

Rustも組込も初心者なので、とにかく規約やモダンな書き方に拘らず、動けばいいという方針で作りたい物を作っていくフェーズ。
単体テストは行わない。コンパイルTo実行のみ。

幸いRustはベタな書き方でも行けるようなので暫くはそれで進め、いずれリファクタリングフェーズでかっこよくモダンな感じにしていければと思っている。(←この時点ではモダンが何か解っていない)

アナログクロック

出来上がり

まずは出来上がりから。 以下の動画では最初は盤面の目盛りがチラチラしてる。 真ん中の円だけ塗り直しするよう変更し、ちょっとだけマシになった感じ。

デザイン

自力で一から作る事など到底叶わないので、先人の作品を組み合わせて作っていく。

・clock

atsamd-wio_terminalのexamplesにあるclockはwio-terminalのディスプレイにデジタルクロックのみ表示する。(アナログクロック表示はない)
Rtcから時間を取得し、Rtcへの時間設定はUSBシリアルから行なっている模様。
今回はUSBからの入力は行わない。(よく解らないので)

・demo-analogclock

embedded-graphicsのexamplesにあるdemo-analogclockはパソコン上のシミュレータウィンドウにアナログ時計を表示する。
今回この見た目でwio-terminalのディスプレイに表示したい。

・wio-splash

「基礎から学ぶ組込みRust」に掲載のwio_splashをベースとして、上記のclockとdemo-analogclockの機能を選択、組み合わせし、1オブジェクトとしてまとめる。

◾️言葉で書く

正直「基礎から学ぶ組込みRust」を一通り読んで一通り作ってはみたが、コードのそれぞれが何を行っているのかがちゃんと腹におちずにフワフワしている。 なので、最初は上記3機能を言葉で記述して、言葉上で組み合わせてからコードに落とすという過程を踏む。

ただし、ライセンスとかがよく解らんので、最終的に組み合わせた物だけ掲載する。

長いので折りたたんでいる。
ピンクがwio_splash
緑がclock
青がdemo-analogclock
誤った記述も散見するが、しようがない。

wio_clock
draw-wioclock

コード

コードはgithubに置こうと思っているが、色々面倒でまだ出来てない。 いずれ置くつもり。

今回はここまで。