Tue 04/01, 2008

8x8 Matrix LED with GAINER [Electronics ]

GAINER 8x8 Matrix LED先日製作した GAINER I/O モジュールに 8x8 ドットマトリクス LED を接続してみた。想定されている LED 表示器は BU5004-R が指定だが、手元にあった TOM-1588BH-B を使用した。row/column が逆なために配線はちょっと判りにくいが、「GAINERでMATRIXLEDできた!(ra66it)」に説明されている通りで良い。とりあえず Flash 用のサンプル ledmatrix_8x8.swf で動作を確認したところまで。"HELLO WORLD !!" の文字列がスクロール表示される。写真は例によって露光時間が長いためにスクロールする LED の点灯がだぶっている。

GAINER システムでは中間の面倒な部分をすっ飛ばしてハードウェアを操作できるのが売りで、アプリケーション用言語(AS とか Java)用 API 以下の低レベルの処理についてはユーザに気を使わせない方針なのだろう。8x8 Matirix LED のための KONFIGURATION_7 はサポート対象外になっているためか、比較的情報が少ない。まぁ、唯一の解説書籍である +GAINER すら私は持っていないのだけどね。それはさておき、KONFIGURATION_7 で I/O モジュールに対して使用できるコマンドは anx...x/a*(set specified analog output, n: row number, x: value (0~F, 4bit))だ。n はマトリクスの行(row)位置を示し、1 回で 1 行分の表示を支持し、8 行分を 1 セットとする。これで 8x8 の 1 面分になる。それから適当なディレイを置いて次の面に切り替えるという操作が基本になっている。value によって 16 段階の明るさを設定することもできるから、基本的にはアナログ(PWM)出力x8(column) + デジタル出力(row)x8 と考えられる(*1)。個々の LED を独立して on/off するためには行(row)につながるデジタル出力は同時に Low レベルにすることはできないため、表示する行以外は High レベルにし、各列(column)のアナログ値に応じて Low レベルである行の 8 個の LED を点灯する。これを高速に順次切り替えることで表示面を構成している。PSoC のコードを確認していないから行と列は逆かも知れない。

8x8 Matrix LED[*1] I/O モジュールのファームウェア(config_c.c)を斜め読みした限りでも LED の明るさは 16 段階に制御できるようになっているし、プロトコルドキュメントにも dout8/aout 8 とある。右の写真は適当にコマンドを送ってグラデーション表示してみた様子。Flash の開発環境は持っていないのだけど、とりあえず Flash ライブラリの Gainer.as をエディタで見ると scanMatrix → scanLine で階調制御に対応しているようだ。scanMatrix には 64 個の要素データを渡せば良いから、上記のような行/列での表示動作を意識する必要はあまりない。

ところが Processing 用ライブラリの添付文書では "dout 16" とあり、MODE7 の初期化で配列 analogOutput[] が要素数 0 で初期化されているため、analogOutput 関数は使用できない筈だ。未確認ではあるが、多分この初期化の部分を変更するだけで使えるんじゃないかな。こちらには scanMatrix に相当するコマンドが見当たらないため、各行について analogOutput をコールすることになるだろう。Java も全然使っていないから苦手ではあるのだけど、環境を整えて試してみようか。

グラデーションのパターンは例えば次のようなコマンドを I/O モジュールに送れば良い。

Q*
KONFIGURATION_7*
a001234567*
a112345678*
a223456789*
a33456789a*
a4456789ab*
a556789abc*
a66789abcd*
a7789abcde*

ちょっと思いついたのだけど、このコンフィギュレーションで 7 seg LED (カソードコモン)を 8 個ドライブできるな。まぁ、PSoC の LED7SEG モジュールで新しいコンフィギュレーションを組んでしまえば手っ取り早いのだけどね。

[2008.04.25]
現状の Gainer for Processing ライブラリでは MODE7 の動作には対応しておらず、analogOut コマンドも使用できない。MODE7 に対応してみたのがこちら「GAINER 用 Processing ライブラリ」。「7-seg LED with GAINER」。

あれ、この配線だと cookbook の例と行と列の位置が入れ替わって表示が変になるような気もするのだけど。

Posted by masato at 09:48 PM
このエントリーのトラックバックURL: http://bird.dip.jp/cgi-bin/mt/mt-tb.cgi/1551
コメントする

おそらく携帯電話等からは投稿できません。日本語文字列を含まないコメントやトラックバック、および当サイトへの言及を含まないトラックバックは御遠慮いただいております。また、90日以上経過した記事へのコメントはできません。










名前、アドレスを登録しますか?