2016年8月24日水曜日

Johnny-Fiveでマイコン制御34 - ドットマトリクスLED表示器

○Led.Matrixオブジェクトを作成する
 ドットマトリクスLED表示器(以下、LEDマトリクス)を制御するには、Led. Matrixオブジェクトを使います。Led.Matrixオブジェクトは、物理的なボードに接続された単一のLEDマトリクスを表すオブジェクトです。Led.Matrixオブジェクトを作成するには、Led.Matrixクラスのコンストラクタを使います。
 Johnny-Fiveでは、シフトレジスタ・デバイスの「MAX7219」と「MAX7221」、I2Cインターフェイス・デバイスの「HT16K33」を使用したLEDマトリクスをサポートしています。
 シフトレジスタ・デバイスのLEDマトリクスを制御するLed. Matrixオブジェクトを作成するには、コンストラクタの引数に、LEDマトリクスの「DATA(DIN)」「CLOCK」「CS)」用のピン番号を含むオブジェクトを指定します。
たとえば、2ピンに「DATA(DIN)」、3ピンに「CLOCK」、4ピンに「CS」を使用するLed. Matrixオブジェクトを作成するには、次のように書きます。
new five.Led.Matrix({
  pins: {
    data: 2,
    clock: 3,
    cs: 4
  }
});

・配線図(led-matrix.fzz)


 I2CインターフェイスのHT16K33を使用したLEDマトリクスを使用する場合は、「controller」プロパティに「HT16K33」を指定します
new five.Led.Matrix({
  controller: "HT16K33"
});

 また、HT16K33を使用したLEDマトリクスは、次のオプションプロパティを指定できます。
プロパティ
タイプ
説明
既定値
addresses
配列
I2Cアドレスの配列
0x70-0x77の範囲
isBicolor
真偽値
trueでバイカラー
false
dims
オブジェクト
寸法表参照
8x8
dims
配列
寸法表参照
8x8
dims
文字列
寸法表参照
8x8
・寸法表
名前
8x8
8
8
16x8
16
8
8x16
8
6

・配線図(led-matrix-HT16K33)


○LEDマトリクスに文字を表示する
 LEDマトリクスに文字を表示するには、「draw」メソッドを使います。引数には、表示する文字、または文字パターンを指定します。
draw(文字)

 指定可能な文字は、次のとおりです。
0 1 2 3 4 5 6 7 8 9
! " # $ % & ' ( ) * + , - . / : ; < = > ? @
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ `
a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~

 たとえば、アルファベット大文字「G」を表示するには、次のように書きます。
  // 文字を表示
  matrix.draw("G")

 複数のLEDマトリクスがカスケード(多段)接続されている場合、すべてのLEDマトリクスで指定した文字が表示されます。特定のLEDマトリクスに文字を表示するには、引数にデバイスインデックスを指定します。
draw(デバイスインデックス, 文字)
 デバイスインデックスは、カスケード接続されたLEDマトリクス(最大8デバイス)の中から、特定のLEDマトリクスを識別するための番号で、連結順に「0」から始まる連番になります。
 たとえば、デバイス0(デバイスインデックス「0)に文字を表示するには、次のように書きます。
  // デバイス0に文字を表示
  matrix.draw(0, "G");


○LEDマトリクスに指定した文字パターンを表示する
 LEDマトリクスに指定した文字パターンを表示するには、「draw」メソッドの引数に文字パターンを指定します。
文字パターンは8ビットまたは16ビットの値の配列(8または16個の要素を持つ配列)を指定します。文字パターンの配列の行と列の数は、LEDマトリクスの寸法と一致している必要があります。
 たとえば、8×8でハートマークを表示するための文字パターンの配列は、次のよう定義します。
[
  "01100110",
  "10011001",
  "10000001",
  "10000001",
  "01000010",
  "00100100",
  "00011000",
  "00000000"
];
 各ビットの値と、LEDマトリクスの1ドットが11で対応し、「1」に設定されたドットが点灯し、「0」に設定されたドットが消灯します。
  // 文字パターンを作成
  var heart = [
    "01100110",
    "10011001",
    "10000001",
    "10000001",
    "01000010",
    "00100100",
    "00011000",
    "00000000"
  ];

  // 文字パターンを表示
  matrix.draw(heart);


○LEDマトリクスの行の点灯パターンを設定する
 LEDマトリクスの行の点灯パターンを設定するには、「row」メソッドを使います。引数には、行インデックス(015)と、点灯パターンを8ビットまたは16ビット値(0255)を指定します。
row(行インデックス, 点灯パターン)

 行数インデックスは「0」から始まるため、一般的な行数から「1」を引いた値を指定します。たとえば、2行目を全点灯するには、次のように書きます。
  // 1行目を全点灯
  matrix.row(1, 255);

 複数のLEDマトリクスがカスケード(多段)接続されている場合、すべてのLEDマトリクスが指定した行のパターンで点灯します。特定のLEDマトリクスの行の点灯パターンを設定するには、引数にデバイスインデックスを指定します。
row(デバイスインデックス, 行インデックス, 点灯パターン)

 デバイスインデックスは、カスケード接続されたLEDマトリクス(最大8デバイス)の中から、特定のLEDマトリクスを識別するための番号で、連結順に「0」から始まる連番になります。
 たとえば、デバイス0(デバイスインデックス「0)2行目を全点灯するには、次のように書きます。
  // デバイス01行目を全点灯
  matrix.row(0, 1, 255);


○LEDマトリクスの列の点灯パターンを設定する
LEDマトリクスの列の点灯パターンを設定するには、「column」メソッドを使います。引数には、列インデックス(015)と、点灯パターンを8ビットまたは16ビット値(0255)を指定します。
column(列インデックス, 点灯パターン)

 列インデックスは「0」から始まるため、一般的な列数から「1」を引いた値を指定します。たとえば、2列目を全点灯するには、次のように書きます。
  // 2列目を全点灯
  matrix.column (1, 255);

 複数のLEDマトリクスがカスケード(多段)接続されている場合、すべてのLEDマトリクスが指定した列のパターンで点灯します。特定のLEDマトリクスの列の点灯パターンを設定するには、引数にデバイスインデックスを指定します。
column(デバイスインデックス, 列インデックス, 表示パターン値)

 デバイスインデックスは、カスケード接続されたLEDマトリクス(最大8デバイス)の中から、特定のLEDマトリクスを識別するための番号で、連結順に「0」から始まる連番になります。
 たとえば、デバイス0(デバイスインデックス「0)2列目を全点灯するには、次のように書きます。
// J5-Arduino\10\Led_Matrix\column-deviceIndex.js
  // デバイス02列目を全点灯
  matrix.column(0, 1, 255);


○LEDマトリクスの特定のドットを点灯する
 LEDマトリクスの特定のドットを点灯するには、「led」メソッドを使います。引数には、対象のドットの位置を示す行インデックスと列インデックス(015)、および点灯状態(0」で消灯、「1」で点灯)を指定します。
led(行インデックス, 列インデックス, 点灯状態)

 行インデックスと列インデックスは「0」から始まるため、一般的な行数と列数から「1」を引いた値を指定します。たとえば、23列目のドットを点灯するには、次のように書きます。
  // 23列目のドットを点灯
  matrix.led(1, 2, 1);

複数のLEDマトリクスがカスケード(多段)接続されている場合、すべてのLEDマトリクスで指定したドットが点灯します。特定のLEDマトリクスのドットを点灯するには、引数にデバイスインデックスを指定します。
led (デバイスインデックス, 行インデックス, 列インデックス, 点灯状態)

 デバイスインデックスは、カスケード接続されたLEDマトリクス(最大8デバイス)の中から、特定のLEDマトリクスを識別するための番号で、連結順に「0」から始まる連番になります。
 たとえば、デバイス0(デバイスインデックス「0)23列目のドットを点灯するには、次のように書きます。
  // デバイス023列目のドットを点灯
  matrix.led(0, 1, 2, 1);

 なお、バイカラー(2)LEDマトリクスの場合、点灯状態にLEDの色を指定することができます。たとえば、23列目のドットを黄色で点灯するには、次のように書きます。
// J5-Arduino\10\Led_Matrix\HT16K33led-biColor.js
  var matrix = new five.Led.Matrix({
    controller: "HT16K33"
    isBicolor: true
  });

  // デバイス023列目のドットを黄色で点灯
  matrix.led(0, 1, 2, LedControl.COLORS.YELLOW);
});

 指定できる色の定数は、次のとおりです。
定数
LedControl.COLORS.GREEN
LedControl.COLORS.YELLOW
LedControl.COLORS.RED


○LEDマトリクスの明るさを調整する
 LEDマトリクスの明るさ(輝度)を調整するには、「brightness」メソッドを使います。引数には輝度を0100()で指定します。
brightness(輝度)

 たとえば、輝度を50%に設定するには、次のように書きます。
  // 輝度を50%設定
  matrix.brightness(50);

複数のLEDマトリクスがカスケード(多段)接続されている場合、すべてのLEDマトリクスの輝度が設定されます。特定にLEDマトリクスの輝度を設定するには、引数にデバイスインデックスを指定します。
brightness(デバイスインデックス, 輝度)

デバイスインデックスは、カスケード接続されたLED表示器(最大8デバイス)の中から、特定のLEDマトリクスを識別するための番号で、連結順に「0」から始まる連番になります。
たとえば、デバイス0(デバイスインデックス「0)LEDマトリクスの輝度を50%に設定するには、次のように書きます。
  // デバイス0の明るさ(輝度)50%に設定
  matrix.brightness(0, 50);


○LEDマトリクスの表示をオン/オフ/クリアする
 LEDマトリクスの表示をオフにするには「off」メソッドを、オンにするには「on」メソッドを使います。たとえば、5秒後にオフにし、10秒後にオンにするには、次のように書きます。
  // 5秒後
  this.wait(5000, function(){
    // 表示オフ
    matrix.off();
  });
  // 10秒後
  this.wait(10000, function(){
    // 表示
    matrix.on();
  });

複数のLEDマトリクスがカスケード(多段)接続されている場合、すべてのLEDマトリクスがオフ/オンされます。特定のLEDマトリクスをオン/オフするには、引数にデバイスインデックスを指定します。デバイスインデックスは、カスケード接続されたLEDマトリクス(最大8デバイス)の中から、特定のLEDマトリクスを識別するための番号で、連結順に「0」から始まる連番になります。
  this.wait(5000, function(){
    // デバイス0の表示オフ
    matrix.off(0);
  });
  // 10秒後
  this.wait(10000, function(){
    // デバイス0の表示オン
    matrix.on(0);
  });

 なお、オフにしてもデータは保持され、オンにすると元の状態で表示されます。LEDマトリクスの表示をクリアするには、「clear」メソッドを使います。
    // すべてのLED表示器の表示をクリア
    matrix.clear();

 複数のLEDマトリクスがカスケード(多段)接続されている場合、すべてのLED表示器がクリアされます。特定のLED表示器をクリアするには、引数にデバイスインデックスを指定します。

    // デバイス0をクリア
    matrix.clear(0);


0 件のコメント:

コメントを投稿