Gainer mini+ActionScript3.0でマトリクスLEDを試す。

今週は土日共に予定がなく暇だったので、
久しぶりにGainer miniを触る機会としてみた。

今回はマトリクスLED。
購入時のセットについていたのはLEDと抵抗、
あとはジャンプワイヤだったが、ジャンプワイヤが
こんな感じの固い奴だけだった。
が、これだとマトリクスLEDの16本もの接続が難しいので、
別途この、柔軟性のある方を購入。
2セット買ったら意外と1000円もしたが、
こいつは今後も使えそうなので良しとしよう。

では、早速+GAINER(旧版)を参考にして、マトリクスLEDの設定を行う。
AS2しかコードが載ってないので、AS3用のライブラリを見ながら設定だ。

コードを書いてみる

最終的には、こんなものが出来た。


Gainer miniでマトリクスLED

今回は、ボタンぽい円を押すと、マトリクスLEDの表示が変わる。
マトリクスLEDの時はモード7なので、

ActionScript

  1. this._gio = new Gainer("localhost", 2000, Gainer.MODE7, true);

このようにしてモード7で初期化。
次に、LEDの表示内容は、ONが15でOFFが0になる、1次元配列で表現する。

具体的にはこんな感じ。

ActionScript

  1. private const ON:uint = 15;
  2. private const OFF:uint = 0;
  3. ・・・
  4. patterns[0] = [
  5.     ON, ON, ON, ON, ON, ON, ON, ON,
  6.     ON, ON, ON, ON, ON, ON, ON, ON,
  7.     ON, ON, ON, ON, ON, ON, ON, ON,
  8.     ON, ON, ON, ON, ON, ON, ON, ON,
  9.     OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF,
  10.     OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF,
  11.     OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF,
  12.     OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF
  13. ];

で、実際にLEDを変更する場合、Gainer#scanMatrixと言う関数を使用する。
このようになる。

ActionScript

  1. this._gio.scanMatrix(patterns[currentCount++ % this.patterns.length]);

今回は、ボタンをきっかけにしてLEDパターンを切り替えたが、
電光掲示板のように自動で切り替えたい場合は、
Gainer#onFinishedに、LEDパターンを切り返す関数を代入する。

ActionScript

  1. this._gio.onFinished = function():void {
  2.     gio.scanMatrix(patterns[currentCount++ % this.patterns.length]);
  3. }

GainerのAS3用クラスは、AS2版をベースにしているためイベント駆動ではなく
このようなAS2風の定義方法になる。
AS3から入った人は要注意。

コンパイル

AS3用のライブラリ内のAnalogDigitalだが、
関数outの引数を指定していないため、コンパイルすると警告が出る。
警告無視モードにしてもいいが、折角なので直そう。

Analog.asの42行目。
ActionScript

  1. public function out(ch,value:Number=0):void {

ActionScript

  1. public function out(ch:*,value:Number=0):void {

に変更。(chの型を「*」と指定)

Digital.asの40行目。
ActionScript

  1. public function out(values):void {

を、

ActionScript

  1. public function out(values:*):void {

に変更。(valuesの型を「*」と指定)

これでよし。

タイトルとURLをコピーしました