3Dプリンティング
自転車にのるはずが雨だったのでDIYヘッドアップディスプレイの制作を進める。前回の記事でマトリクスLEDマウントの設計を失敗していたが、設計のミスを直し、続けてLEDのカバーを3Dプリンタで作った。
マトリクスLEDカバーの仕様
面が汚いのは3Dプリンタベッドの掃除をサボった結果です
内部の出っ張りはマトリクスLEDを固定する用。側面の2つの穴はタクトスイッチと光センサ(CDS)を固定する穴。天面の穴は配線を通す穴となる。
マウントに固定したLEDを静かに挿入。
LEDマウントとカバーは少しの抵抗がある程寸法がピッタリなので、ネジや接着剤で固定しなくても大丈夫だった。
心配なので後から排気用の穴を電動ドリルで空けた
配線のハンダ付け
苦手なハンダ付けに進む。まずはスイッチの端子に配線をハンダ付け。後から熱収縮チューブでハンダ付けした箇所を覆った。
続けて光センサも処理。
あまり配線の数が増えると鬱陶しいので、スイッチと光センサのマイナス線はマトリクスLEDのマイナスへ合流させる。
ハンダ付けを行ない、絶縁テープで保護。
2mm厚のカバーをM4ボルトで固定。
最後に配線をチューブで覆い、ディスプレイ部が完成した。無骨でかっこいい。
表示テスト
念の為arduinoへ通電させ、きちんと表示できるかテストした。問題は無いようだ。
うれしいので意味もなく投影してみる。
ボタン操作・照度自動調整の実装
ボタンがあれば、オンオフ操作や表示モード切替えが実現できる。光センサは、夜間LEDの照度を自動で調整させる為に付けた。これらを機能させる為にArduino用のコードを書いていく。
配線図
ボタンはArduino内蔵のプルアップ抵抗を利用すれば簡単な配線で利用できる。光センサはAnalogReadへ繋ぐと同時に1kΩの抵抗を介して5Vへ繋ぐと機能する。ついでにボタン操作を行った時に音を鳴らしたいので圧電ブザーも付けたい。
光センサの数値をシリアルモニタで確認すると、ちゃんと数値を拾っている事を確認できたけど、結構シビアな動きだった。光センサから得た数値を元に条件分岐で処理を振り分けてLEDの照度を調整するには、Adafruit 8×8 LED Matrixのライブラリ関数を利用すれば簡単に実装できる。
matrix1.setBrightness(brighness)
これだけ。引数は0-16の範囲で照度が変化し、0が最低照度となる。
手をかざしてセンサを覆うとディスプレイの照度が自動で変化する。センサから拾っている数値の変化がシビアで、それを元に照度を変化させるとチカチカと忙しいので、一定時間毎の数値の平均をとって滑らかに変化するように改良する必要があるかな。
続いてボタン操作の実装。仮の処理としてボタンを押すとディスプレイの数値が変化する。処理的にはデジタルピンの電圧をhighかlowかを判断して条件分岐で処理を振り分けるだけなので簡単に実装できた。
圧電ブザーも実装。Arduinoライブラリのtone関数で音の長さ、音色の高低が指定できる。
次回はこのディスプレイユニットを車内に固定して、コンバイナ設計の検討を行う予定。