名前PICKERをアップデートした

用途も使い方も前回と同じ

あらかじめ登録された複数人の中からランダムに一名を指定するための装置。授業中に回答者を指定するために使うことを想定してます。

今回注力したところ

簡単に電池交換できることと、文字を大きく表示できるようにOLED2枚使いにしたところ。

前回のNamePickerはCR2032を使っていたのだけれど、ケースを開けて配線丸出しにしないと電池交換できなかった(LEDをもいだ効果か、3週間ぐらいは電池が持った様子)。

今回はできるだけ手軽に電池交換できるように、部品の入っている空間と電池の入る空間を分けて、スライド式で開けられる電池蓋をつけた。

また、前回は128×32のOLED1枚を使っていたけど、文字が小さすぎて名前がよく読めないという問題があったので、今回は128×64のOLEDを2枚組み合わせて使って、文字を大きく表示できるようにした。

LovyanGFXでつまづいた

実は前回も128×32のOLEDを使おうとしたときに、偶数行奇数行の描画順序の問題でつまづいて、らびやんさん(@lovyan03)にアドバイスいただいていたんだけど、今回は1つのマイコンで2枚のOLEDを扱おうとしたら最後にinitを読んだ方しか使えない問題でつまづいて、またまたアドバイス頂いた。

LovyanGFXでは、I2Cに使うピンを自由に選べるので、てっきりソフトウェア的なI2Cだと思い込んでいたんだけど、実はESP32のコードではハードウェアI2C(ESP32には2個あるらしい)を使っているとのこと。ただ、ESP8266向けのほうはソフトウェアでやってるので、そちらのコードを移植してくれば3つ以上のディスプレイも使えるかもとのこと。

前回も今回も、つぶやいた直後にアドバイス送ってくださってるんだけど、いったいどういう仕組みで監視しているのか……
ありがたや。

Fusion360もがんばった

今回はちょっと頑張ってモデリングした。趣味のロボット製作という本を参考にさせてもらって、ケースそのものだけではなくて、OLEDやボタン、電池など、内蔵される部品もモデリングしたり既存データを取り込んだりして、中身が見える状態でケースをモデリングした。

いつもはケースに組み込む部品のサイズだけをノギスで計って、その部品が配置できるだけの空間を空想しながらモデリングしてたけど、ちゃんと部品もモデリングすると、干渉するかどうかが正確にわかるので、格段にケースが作りやすかった。

最後に

今回、初めてFusion360で各パーツをコンポーネントとして定義した。(今まで全部1コンポーネント内に複数ボディとして作っていた……)

コンポーネントに分離すると、移動もできるし、色分けも簡単にできるし、アニメーションも作れる。ということで組み立てアニメーションも作ってみた。

今回は、Fusion360を活用できたので満足。