記事一覧

スポンサーサイト

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

Johnny-Fiveでマイコン制御17 - センサー

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

 アナログセンサー(ポテンショメーター、フレックス/感温/感圧/ホール/傾斜/光センサーなど)の測定値を取得するには、Sensorオブジェクトを使います。Sensorオブジェクトは、物理的なボード上に接続されているアナログセンサーを表すオブジェクトです。Sensorオブジェクトを作成するには、Sensorクラスのコンストラクタを使います。引数にはアナログセンサーの出力を接続するアナログピンの名前(A0A5)を指定します。

new five.Sensor("アナログピン名");

 

 オプションの「pins」プロパティでピン番号を指定する場合は、次のように書きます。

new five.Sensor ({

  pin: ピン番号

});

 

 実験的にデジタルセンサーもサポートされています。デジタルセンサーのSensorオブジェクトを作成するには、ピン番号(pin」プロパティ)にデジタルピンを、オプションの「type」プロパティに「digital」を指定します。

new five.Sensor({

  pin: 2,

  type: "digital"

});

 

// または次のようにも記述できる

new five.Sensor.Digital(2);

 

センサーのデータを取得する

 センサーのデータを取得するには、イベントハンドラを使います。イベントハンドラは、「on」メソッドを使って書きます。イベントにはイベント名を、ハンドラにはイベント発生時に実行する処理(コールバック関数)を指定します。取得した値は、引数に渡されます。

on("イベント", ハンドラ(引数))

 

 Sensorオブジェクトで発生するイベントは、次のとおりです。

イベント

説明

change

センサーの入力データが変化したときに発生する

data

25ミリ秒(frea」プロパティで変更可)間隔で発生する

 

たとえば、既定の間隔(25ミリ秒)でデータを取得するには、次のように書きます。

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

var board = new five.Board();

 

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

  // アナログセンサーのSensorオブジェクトを作成

  // A0ピンをセンサー入力に設定

  var sensor = new five.Sensor("A0");

 

  // センサー値を取得

  sensor.on("data", function(value) {

    console.log(value);

  });

});

 

・配線図

 2016080505.png

 

 センサーのデータは、次のプロパティで参照することもできます。

プロパティ

説明

boolean

ADコンバータの読みをブール値にスケーリング

raw

ADコンバータ値(01023)

analog

ADコンバータの読みを8ビット値にスケーリング(0255)

value

ADコンバータ値、またはスケーリングされた値

 

 たとえば、センサーのデータが変化したときに、「analog」と「value」プロパティでデータを参照するには、次のように書きます。

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

var board = new five.Board();

 

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

  // アナログセンサーのSensorオブジェクトを作成

  // A0ピンをセンサー入力に設定

  var sensor = new five.Sensor("A0");

 

  // センサー値を取得

  sensor.on("change", function() {

    console.log("analog :" + this.analog);

    console.log("value  :" + this.value);

  });

});

 

センサー・データの読み取り間隔を設定する

 センサーのデータの読み取り間隔(data」イベントの間隔)を設定するには、オプションの「freq」プロパティを使います。値にはミリ秒単位の時間を指定します。たとえば、100ミリ秒間隔でデータを読み取るには、次のように書きます。

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

var board = new five.Board();

 

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

  // アナログセンサーのSensorオブジェクトを作成

  // 読み取り間隔を100ミリ秒に設定

  var sensor = new five.Sensor({

                 pin: "A0",

                 freq: 100

               });

 

  // センサー値を取得

  sensor.on("data", function(value) {

    console.log(value);

  });

});

 

 ○センサー・データのしきい値を設定する

 センサー・データのしきい値(既定値は「1)を設定するには、オプションの「threshold」プロパティを使います。センサー・データの値がしきい値以上になると、「change」イベントが発生します。たとえば、しきい値を「10」に設定するには、次のように書きます。

  // アナログセンサーのSensorオブジェクトを作成

  // しきい値を100に設定

  var sensor = new five.Sensor({

                 pin: "A0",

                 threshold: 10

               });

 

センサー・データをスケーリングする

 センサー・データをスケーリングするには、「scaleTo」メソッドまたは「fscaleTo」メソッドを使います。引数には、最大値と最小値を指定します。「scaleTo」メソッドの戻り値は整数(integer)、「fscaleTo」の戻り値は浮動小数(float)です、

scaleTo(最小値, 最大値)

scaleTo([最小値, 最大値])

 

fscaleTo(最小値, 最大値)

fscaleTo([最小値, 最大値])

 

 たとえば、0100の範囲にスケーリングするには、次のように書きます。

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

var board = new five.Board();

 

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

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

  var potentiometer = new five.Sensor("A0");

  // ポテンショメーターの位置に応じて0100の値を出力

  potentiometer.on("change", function() {

    console.log(this.scaleTo(0,180));

  });

});

 

 ○センサー・データの真偽のしきい値を設定する

 センサー・データの真偽のしきい値を設定するには、「booleanAt」メソッドを使います。しきい値は「0」から「1023」の整数値で指定します。既定値は「512」です。

booleanAt(しきい値)

 

 たとえば、真偽のしきい値を「100(100以上なら「true」、100より小さいなら「false) に設定するには、次のように書きます。

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

var board = new five.Board();

 

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

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

  var sensor = new five.Sensor("A0");

 

  // 真偽のしきい値を100に設定

  sensor.booleanAt(100);

 

  sensor.on("change", function() {

    console.log(this.boolean);

    console.log(this.value);

  });

});

 

 ○センサー・データが指定範囲内のときに処理を実行する

 センサー・データが指定範囲内のときに処理を実行するには、「within」メソッドを使います。引数には、値範囲(最小値と最大値)とハンドラを指定します。ハンドラには、値が指定範囲内にあるときに実行するコールバック関数を指定します。

within([最初値, 最大値], ハンドラ)

 

 たとえば、データが50から150の範囲内のときに「In a range」とメッセージを表示するには、次のように書きます。

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

var board = new five.Board();

 

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

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

  var sensor = new five.Sensor("A0");

 

  // データが50150範囲内ならメッセージを表示

  sensor.within([50, 150], function() {

    console.log("In a range");

  });

});

 

 複数のセンサーをまとめて管理する

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

new five.Sensors (配列);

 

たとえば、A0A1A5ピンに接続された3つのアナログセンサーを管理するSensorsオブジェクトを作成するには、次のように書きます。

new five.Sensors (["A0", "A1", "A2"]);

 

 オプションの「pin」プロパティでピン番号を指定する場合は、次のように書きます。

new five.Sensors ([{pin:"A0" }, {pin: "A1"}, {pin: "A2"}]);

 

特定のセンサーのデータを取得する

 Sensorsオブジェクトの特定のセンサーを参照するには、配列のインデックスを指定します。インデックスは、ピン番号の記述順に0から割り当てられる連番です。たとえば、インデックスが「0」のセンサーのデータを取得するには、次のように書きます。

  // A0の接続されているセンサーのデータを取得

  sensor[0].on("change", function(value) {

    console.log(value);

  });

 

 

スポンサーサイト

コメント

コメントの投稿

非公開コメント

ads

プロフィール

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

kindle本

最新コメント

温度計

ads

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