2016年8月3日水曜日

Johnny-Fiveでマイコン制御11 - Pin

○Pinオブジェクトを作成する
 Pinオブジェクトは、物理的なボード上のいずれかのピンを表すオブジェクトです。Pinオブジェクトを作成するには、Pinクラスのコンストラクタを使います。引数には、ピン番号を指定します。
new five.Pin(ピン番号)

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



デジタル入出力のPinオブジェクトを作成する
 デジタル入出力のPinオブジェクトを作成するには、Pinクラスのコンストラクタにデジタルのピン番号(Arduino Unoでは「019)を指定します。たとえば、13ピンをデジタル入出力ピンと使用するためのPinオブジェクトを作成するには、次のように書きます。
// Arduino\CHAPTER02\Pin\pin-Digital.js
var five = require("johnny-five");
var board = new five.Board();

board.on("ready", function() {
  // デジタルのpinオブジェクトを作成
  var pin = new five.Pin(13);

  // JSON形式
  // var pin = new five.Pin({pin: 13});

  var state = 0x00;
  this.loop(500, function() {
    pin.write(state ^= 0x01);
  });
});

アナログ入力のPinオブジェクトを作成する
アナログ入力のPinオブジェクトを作成するには、Pinクラスのコンストラクタにアナログのピン番号(Arduino Unoでは「A0A5)を指定します。たとえば、A0ピンをアナログ入力ピンと使用するためのPinオブジェクトを作成するには、次のように書きます。
// Arduino\CHAPTER02\Pin\pin-Analog.js
var five = require("johnny-five");
var board = new five.Board();

board.on("ready", function() {
  // アナログ入力のpinオブジェクトを作成
  var pin = new five.Pin("A0");

  // JSON形式
  // var pin = new five.Pin({pin: "A0"});

  pin.read(function(error, value) {
    console.log(value);
  });
});



○Pinオブジェクトのタイプを設定する
 通常、ピンのタイプは、ピン番号に基づいて自動的に推測されますが、明示的に設定する場合には、オプションの「type」プロパティを使います。値に「digital」または「analog」を指定します。
 たとえば、たとえば、A0(19)ピンをデジタル入出力ピンと使用するためのPinオブジェクトを作成するには、次のように書きます。

var five = require("johnny-five");
var board = new five.Board();

board.on("ready", function() {
  // アナログ入力A0をデジタル入出力として使う
  // pinオブジェクトを作成
  var pin = new five.Pin({
                 pin: 14,
                 type: "digital"
               });
  var state = 0x00;
  this.loop(500, function() {
    pin.write(state ^= 0x01);
  });
});


デジタル値を出力する
 デジタル値のHIGH(1)を出力するには「high」メソッドを、デジタル値のLOW(0)を出力するには「low」メソッドを使います。
 「write」メソッドでデジタル値を出力することもできます。引数に「0」を指定するとLOW、「1」を指定するとHIGHになります。
var five = require("johnny-five");
var board = new five.Board();

board.on("ready", function() {
  // pinオブジェクトを作成
  // 13ピンをデジタル入出力に設定
  var pin = new five.Pin(13);
  // HIGH(1)を出力
  pin.high();

this.wait(1000, function() {
    // LOW(0)を出力
     pin.low();
  });

  this.wait(2000, function() {
    // HIGH(1)を出力
    pin.write(1);
    // または
    //five.Pin.write(pin, 1);
  });

  this.wait(3000, function() {
    // HIGH(1)を出力
     pin.write(0);
    // または
    //five.Pin.write(pin, 0);
  });
});
write」メソッドを実行すると、ピンはデジタル出力に設定されます。このため、引数に1以上の値を指定してもHIGHになります。


ピンの入力値を読み取る
 ピンの入力値を読み取るには、「read」メソッドを使います。読み取った値は、value引数に渡されます。
read(コールバック関数(error引数, value引数))

たとえば、13ピンのデジタル入力値を読み取るには、次のように書きます。
var five = require("johnny-five");
var board = new five.Board();

board.on("ready", function() {
  // pinオブジェクトを作成
  // 13ピンをデジタル入出力に設定
  var pin = new five.Pin(13);

  // ピンの入力値を読み取って表示
  pin.read(function(error, value) {
    console.log(value);
  });

  /* または
  five.Pin.read(pin, function(error, value) {
    console.log(value);
  });
  */
});

ピンの現在の状態を確認する
 ピンの現在の状態を確認するには、「query」メソッドを使います。コールバック関数の引数にピンの状態のオブジェクトが渡されます。
query(コールバック関数(引数))

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

board.on("ready", function() {
  // pinオブジェクトを作成(13ピンをデジタル入出力に設定)
  var pin = new five.Pin(13)

  // 13ピンの現在の状態を表示
  pin.query(function(state) {
  console.log(state);
  });
});

ピンの状態のオブジェクトは、次のようになります。
{
  supportedModes: [ 0, 1, 4 ],
  mode: 1,
  value: 0,
  report: 1,
  analogChannel: 127
  state: 1,
}
ピンの状態のオブジェクトの各プロパティの詳細は、次のとおりです、
プロパティ
説明
supportedModes
ピンでサポートされるモードの値リスト
mode
現在のモード
value
現在の値
report
現在、その値を報告しているかどうか
analogChannel
アナログピンの数値インデックス、デジタルピンの場合は127
state
出力モードの場合以前に書き込まれた値、入力モードの場合、プルアップの状態
 モードの値の対応表は、次のとおりです
モード
デジタル入力
0
デジタル出力
1
アナログ入力
2
PWM出力
3
サーボ出力
4


ピンのモードを設定する
 ピンのモードを設定するには、オプションの「mode」プロパティをつかいます。設定できる値、定数は、次のとおりです。
モード
定数
デジタル入力
0
Pin.INPUT
デジタル出力
1
Pin.OUTPUT
アナログ入力
2
Pin.ANALOG
PWM出力
3
Pin.PWM
サーボ出力
4
Pin.SERVO

 たとえば、9ピンをPWM出力に設定するには、次のように書きます。
var five = require("johnny-five");
var board = new five.Board();

board.on("ready", function() {
  // pinオブジェクトを作成
  // 9ピンをPWM出力に設定
  var pin = new five.Pin({
              pin: 9,
              mode: five.Pin.PWM,
            });

  // pinオブジェクトの状態を確認
  pin.query(function(state) {
    console.log(state);
  });
});


0 件のコメント:

コメントを投稿