○Sensorオブジェクトを作成する
アナログセンサー(ポテンショメーター、フレックス/感温/感圧/ホール/傾斜/光センサーなど)の測定値を取得するには、Sensorオブジェクトを使います。Sensorオブジェクトは、物理的なボード上に接続されているアナログセンサーを表すオブジェクトです。Sensorオブジェクトを作成するには、Sensorクラスのコンストラクタを使います。引数にはアナログセンサーの出力を接続するアナログピンの名前(A0~A5)を指定します。
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);
});
});
|
・配線図
センサーのデータは、次のプロパティで参照することもできます。
プロパティ
|
説明
|
boolean
|
ADコンバータの読みをブール値にスケーリング
|
raw
|
ADコンバータ値(0~1023)
|
analog
|
ADコンバータの読みを8ビット値にスケーリング(0~255)
|
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([最小値, 最大値])
|
たとえば、0~100の範囲にスケーリングするには、次のように書きます。
var five = require("johnny-five");
var board = new five.Board();
board.on("ready", function()
{
// Sensorオブジェクトを作成
var
potentiometer = new five.Sensor("A0");
// ポテンショメーターの位置に応じて0~100の値を出力
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");
// データが50~150範囲内ならメッセージを表示
sensor.within([50, 150], function() {
console.log("In a range");
});
});
|
○複数のセンサーをまとめて管理する
複数のセンサーをまとめて管理するには、Sensorsオブジェクトを使います。Sensorsオブジェクトは、物理的なボード上に接続されている複数のセンサーを表すオブジェクトのコレクションです。Sensorsオブジェクトを作成するには、Sensorsクラスのコンストラクタを使います。引数には、センサーを接続するピン番号またはSensorオブジェクトの配列を指定します。
new five.Sensors (配列);
|
たとえば、A0、A1、A5ピンに接続された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);
});
|
0 件のコメント:
コメントを投稿