記事一覧

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Johnny-Fiveでマイコン制御32 - シフトレジスタ

○ShiftRegisterオブジェクトを作成する

 シフトレジタを制御するには、ShiftRegisterオブジェクトを使います。ShiftRegisterオブジェクトは、物理的なボードに接続された単一のシフトレジタを表すオブジェクトのコレクションです。ShiftRegisterオブジェクトを作成するには、ShiftRegisterクラスのコンストラクタを使います。引数には、dataclocklatchreset(オプション)用のピンの値を含む配列またはオブジェクトを指定します。

new five.ShiftRegister([ data, clock, latch, [reset]]);

 

たとえば、2ピンをdata3ピンをclock4ピンをlatchに使用するShiftRegisterオブジェクトを作成するには、次のように書きます。

new five.ShiftRegister([2, 3, 4]);

 

 オブジェクトで指定する場合は、次のように書きます。

new five.ShiftRegister({

  pins: [2, 3, 4]

});

 

// または

new five.ShiftRegister({

  pins: {

    data: 2,

    clock: 3,

    latch: 4

  }

});

 

シフトレジスタに8ビットデータを送信する

 シフトレジスタに8ビット(1バイト)のデータを送信するには、「send」メソッドを使います。引数に送信する8ビットのバイト値、またはバイト値の配列を指定します。

send(バイト値)

send([ バイト値1, バイト値2])

 

たとえば、「0x11」を送信するには、次のように書きます。

var five = require("johnny-five");

var board = new five.Board();

 

board.on("ready", function() {

  // ShiftRegisterオブジェクトを作成

  var register = new five.ShiftRegister([2, 3, 4]);

 

  // データを送信

  register.send(0x11);

});

 

・配線図

2016080821.png 

 

シフトレジスタをクリアする

 シフトレジスタをクリアするには、「clear」メソッドを使います。たとえば、5秒後にシフトレジスタをクリアするには、次のように書きます。

  // データを送信

  register.send(0xFF);

  // 5秒後

  this.wait(5000, function(){

    // シフトレジスタをクリア

    register.clear();

  });

 

シフトレジスタのリセットを制御する

 シフトレジスタのリセットを制御するには、まずresetピンを指定してShiftRegisterオブジェクトを作成します。たとえば、9ピンをresetピンに設定するには、次のように書きます。

new five.ShiftRegister({

    pins: {

      data: 2,

      clock: 3,

      latch: 4,

      reset: 9,

    }

  });

 

 次の「reset」メソッドを使って、resetピンを「HIGH」にします。

  // resetピンをHIGIにする

  register.reset();

 データの送信処理などは、「reset」メソッドの実行後に行います。

 

・配線図

2016080822.png 

 

7セグメントLEDに数字を表示する

 シフトレジスタを使用した7セグメントLEDの制御回路で、数字を表示するには、「display」メソッドを使います。引数には、数字の09を数値または文字列で指定します。

display(数字)

 

 たとえば、09の数字を表示するには、次のように書きます。

var five = require("johnny-five");

var board = new five.Board();

 

board.on("ready", function() {

  // ShiftRegisterオブジェクトを作成

  var register = new five.ShiftRegister([2, 3, 4]);

  var number = 0;

 

  this.loop(500, function() {

    // 09の数字を表示

    register.display(number++)

    if (number > 9) {

      number = 0;

    }

  });

});

 

小数点を非表示するには、数字「.」を付けて指定します。

  this.loop(500, function() {

    // 小数点付で09の数字を表示

    register.display((number++) + ".")

    if (number > 9) {

      number = 0;

    }

  });

 

※カソードコモンの場合、動作が逆になっていて「.」を付けると、小数点が消えます(20168月現在)

 

・配線図-カソードコモン

2016080823.png 

 

 なお、アノードコモンの7セグメントLEDを使用する場合、オプションの「isAnode」に「true」を指定して、ShiftRegisterオブジェクトを作成する必要があります。

new five.ShiftRegister({

    isAnode: true,

    pins: [2, 3, 4]

});

 

・配線図-アノードコモン

2016080823.png 


 

スポンサーサイト

コメント

コメントの投稿

非公開コメント

ads

プロフィール

Author:部員3号
FC2ブログへようこそ!

kindle本

最新コメント

温度計

ads

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。