MCUでスキャンするのが面倒くさくなったので(笑)。
TM1630
深圳の半導体メーカーTitan Micro Electronics(天微电子股份有限公司)のデバイスで多桁LEDドライバとキースキャン入力の複合デバイスであるTM1630を使ってみました。
MCUとはSTB, DIO, CLKの3線で通信し、セグメントのドライブと桁スキャンは内部のレジスタに書込んだデータに従ってデバイスが行ってくれます。輝度も7段階に変更できて最大桁数5桁(7セグメントのみの場合)あるいは4桁(7セグメント+1セグメント)のLEDをダイナミックドライブします。MAXIMのMX7291/MX7221と同様に使えますが、桁数が少ない分かなりデバイス価格が抑えられていて手を出しやすくなっています。
TM1630と同じく秋月電子で販売されている上位デバイスであるTM1637はArduinoのライブラリがあったのですが、こちらはライブラリが見つかりませんでした。通信は普通にクロックをパタパタさせてストローブで確定という74HC595に似た仕様でしたので練習も兼ねてライブラリ化してみました。
プロトシールドでサンプルスケッチ動作中
(上下逆なのは小数点を別の用途で使うために左上表示にしています)
ライブラリ:TM1630.zip
リンクを右クリックでリンク先ファイルをダウンロードして下さい。
ライブラリはZIP形式のライブラリをインストールする事で利用できるようになります。
スケッチ例として1桁点灯の簡単なサンプルを入れてあります。
LED表示機能はArduino Diecimila(秋月互換ボード), Uno, Nanoで動作確認しています。
信号線のピン配置はTM1630.hの中で次のように定義していますが、ヘッダファイル読み込み後、メッソッドbegin()の呼出し前に定義し直せば変更できます。
#define TM1630_STB 13
#define TM1630_DIO 12
#define TM1630_CLK 11
あと使用上の注意が1点。
デバイスの仕様なのか、キー読み取りをして輝度設定を行っても有効になりません。
データシートのフローチャートでは表示データ送信後に輝度設定を行い、その後にキースキャンするという流れになっていて、初期状態もしくはキースキャンでは無く何らかの表示データの送信を行った後でないと輝度設定が有効にならない様です。キースキャンを行ってその値を見て輝度設定を行っても一向に反映されないのでかなり悩みました。
ライブラリはGPL v.2に準拠したものとし、無保証かつ使用した事により生じたいかなる不具合・事故その他の事象一切に対して作者は責任を有しません。利用に当たっては使用者の自己責任の下で行うものとします。
と、まあ、こんなお約束事を一応書いておきますが、ご自由にご利用下さい。