いまさらですが、Arduinoを始めてみました。
この日記では、個人的な覚書に終始して、具体的なプログラムとか回路とかには触れないつもりです。あしからず。
某キャットアイの某キネティックなテールライトのような、ブレーキ掛けたっぽい挙動の時に明るく光るテールライトを作る、という目標を立てました。一応ですよ、一応。
で、初心者はどちらかというと回路とプログラミングのお勉強を兼ねたLEDチカチカということになっています。1本から複数本へと順調にレベルアップし、複数桁の7セグへと順当進化しました。ダイナミック点灯なる概念が出てきてなんとかクリアしたのですが、Arduinoからの信号線が大量に出ていくことになりますね。7セグ(実は小数点込で8セグ)と3桁ですので8+3=11本の信号線が必要になりますが、桁増やしていくといずれArduinoのピンが足りなくなる、機能を維持しつつ減らすことできないの?という疑問が。
調べてみるとまず3to8ラインデコーダという、3ビットを10進数0~7へ置き換えるIC(74HC138)を発見。これを使うとそれなりに信号線が削減できてご満悦、とはならず、原理的に複数セグメントを同時に選択することができないので、せいぜい表示桁の切り替え側に使うことぐらいしかできませんでした。それでも8桁ダイナミック点灯時は、桁切り替えの制御ピンは8本からそれぞれのビット用と制御用の計4本に半減できるのですが。
7セグの制御方法はそれなりに把握したので、次は8×8LEDマトリクスで電光掲示板をば。
これ8行×8列のLEDで構成されていて、8桁7セグと制御方法が似通っているんですね。
こうなると信号線を極力減らしたいということで、調べてみるとシフトレジスタ(SN74HC595N)というICがヒット。これはシリアルでビット列を投げると0~7のピンでそれぞれのビットに対応するものを個別にON/OFFできるというもの。(素直にパラレルに変換って書けばいいのに)
これを使えば同期用信号線と込々で3本ないし4本で制御できます。しかもこのIC自体を直列につないでいくと制御できるピン数が増えていくので願ったりかなったりです。
LED8本接続して使い方を実験してそれなりに把握しました。
これでLEDマトリクスもなんとか制御できそうだ、ということで入手してみると、LEDの配置とピン配置の対応がぐちゃぐちゃになっていました…なにこれ頭悪いorz
フォントを作って表示する関係で、できればシフトレジスタに投げるビット列はマトリックス内のLEDの配置に合わせたものにしたい、のですが…
このぐちゃぐちゃ問題、巷ではどう解決しているんでしょうね?ネット上の作例あたってみても、ぐちゃぐちゃ問題の解決方法はなんか触れられていないような気がするんです。
0 件のコメント:
コメントを投稿