2016年8月5日金曜日

Johnny-Fiveでマイコン制御15 - ボタン

○Buttonオブジェクトを作成する
 プッシュボタンの状態を取得する、Buttonオブジェクトを使います。Buttonオブジェクトは、物理的なボード上に接続されているプッシュボタンを表すオブジェクトです。Buttonオブジェクトを作成するには、Buttonクラスのコンストラクタを使います。引数にはプッシュボタンを接続するピンの番号を指定します。
new five.Button (ピン番号);

 オプションの「pins」プロパティでピン番号を指定する場合は、次のように書きます。
new five.Button ({
  pin: ピン番号
});

 Buttonオブジェクトは、既定ではアクティブHIGH(押したときにHIGH、離したときにLOW)です。アクティブLOW(押したときにLOW、離したときにHIGH)で使用する場合は、オプションの「invert」プロパティを「true」に設定して、Buttonオブジェクトを作成する必要があります。
new five.Button({
  pin: ピン番号,
  invert: true
});

・配線図-アクティブHIGH(button-active-high.fzz)
 

・配線図-アクティブLOW(button-active-low.fzz)

ボタンの状態を取得する
 ボタンの状態を取得するには、イベントハンドラを使います。イベントハンドラは、「on」メソッドを使って書きます。イベントにはイベント名を、ハンドラにはイベント発生時に実行する処理(コールバック関数)を指定します。
on("イベント", ハンドラ)

 Buttonオブジェクトで発生するイベントは、次のとおりです。
イベント
説明
hold
ボタンを500ミリ秒(既定)以上押しっぱなしにしたときに発生する
down, press
ボタンが押されたときに発生する
up, release
ボタンが離されたときに発生する

 たとえば、ボタンの現在の状態を表示するコードは、次のように書きます。
var five = require("johnny-five");
var board = new five.Board();

board.on("ready", function() {
  // buttonオブジェクトを作成(2ピンをボタン入力用に設定)
  var button = new five.Button(2);

// down」イベント:ボタンが押されたとき(オン)に発生
  button.on("down", function() {
    console.log("down");
});

  // hold」イベント: 一定時間(既定値は500ms)ボタンが押され続けたときに発生
  button.on("hold", function() {
    console.log("hold");
  });

  // up」イベント: ボタンが解放されたとき(オンからオフ時)に発生
  button.on("up", function() {
    console.log("up");
  });
});

ボタンのホールド時間を設定する
 ボタンのホールド時間を設定するには、オプションの「holdtime」プロパティを使います。値にミリ秒単位の時間を指定します。たとえば、ホールド時間を1000ミリ秒に設定するには、次のように書きます。
  // buttonオブジェクトを作成(2ピンをボタン入力用に設定)
  // hold」イベントが発生するまでの時間を1000ミリ秒に設定
  button = new five.Button({
             pin: 2,
             holdtime: 1000
           });

内蔵のプルアップ抵抗を使用する
 ボタンをアクティブLOWで使用する場合、入力ポート内蔵のプルアップ抵抗を使用することができます。マイコン内蔵のプルアップ抵抗を使用するには、オプションの「isPullup」プロパティに「true」を指定します。
  // buttonオブジェクトを作成(2ピンをボタン入力用に設定)
  // アクティブLowに設定し、ボタン入力ピンをプルアップ
  var button = new five.Button({
                 pin: 2,
                 invert: true,
                 isPullup: true
           });

・配線図(button-active-low2.fzz)
 


複数のボタンをまとめて管理する
 複数のボタンをまとめて管理するには、Buttonsオブジェクトを使います。Buttonsオブジェクトは、物理的なボード上に接続されている複数のボタンを表すオブジェクトのコレクションです。Buttonsオブジェクトを作成するには、Buttonsクラスのコンストラクタを使います。引数には、ボタンを接続するピン番号またはButtonオブジェクトの配列を指定します。
new five.Buttons (配列);

たとえば、234ピンに接続された3つのボタンを管理するButtonsオブジェクトを作成するには、次のように書きます。
new five.Buttons ([2, 3, 4]);

 オプションの「pin」プロパティでピン番号を指定する場合は、次のように書きます。
new five.Buttons ([{pin: 9}, {pin: 10}, {pin: 11}]);

特定のボタンのイベントを検出する
 Buttonsオブジェクトの特定のボタンを参照するには、配列のインデックスを指定します。インデックスは、ピン番号の記述順に0から割り当てられる連番です。たとえば、インデックスが「0」のボタンの「down」イベントを検出するには、次のように書きます。
  button[1].on("down", function() {
    console.log("buton1 down");
  });


0 件のコメント:

コメントを投稿