記事一覧

スポンサーサイト

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

Johnny-Fiveでマイコン制御19 - モーション・距離センサー

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

 IR(PIR)モーションセンサーを使用するには、Motionオブジェクトを使います。Motionオブジェクトは、物理的なボード上に接続されているIRモーションセンサーを表すオブジェクトです

Johnny-FiveがサポートするIRモーションセンサーは、次のとおりです。

Parallax PIRセンサー

HC-SR501など一般的なIRモーションセンサー

OSEPP IR Proximity Sensor

Sharp IR Motion Detection

GP2Y0D810Z0F

GP2Y0D815Z0F

 

Motionオブジェクトを作成するには、Motionクラスのコンストラクタを使います。

Parallax PIRセンサーやHC-SR501など一般的なIRモーションセンサーのMotionオブジェクトを作成するには、引数にIRモーションセンサーを接続するデジタル入力のピン番号を指定します。

new five.Motion(ピン番号);

 

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

new five.Motion ({

  pin: ピン番号

});

 

・配線図

2016080601.png 


 「GP2Y0D810Z0F」「GP2Y0D815Z0F」のMotionオブジェクトを作成するには、「pin」プロパティにセンサーの出力を接続するアナログ入力ピンの名前(A0A5)を、「controller」プロパティにデバイス名を指定します。

var motion = new five.Motion({

  controller: "GP2Y0D810Z0F",

  pin: "A0"

});

 

var motion = new five.Motion({

  controller: "GP2Y0D815Z0F",

  pin: "A0"

});

 

 I2Cインターフェイスの「GP2Y0D810Z0F」モジュールを使用する場合は、デバイス名だけを指定します。

var motion = new five.Motion({

  controller: "GP2Y0D810Z0F",

});

 

 「GP2Y0D810Z0F」「GP2Y0D815Z0F」の使用用は、次のページを参照してください。

Motion - GP2Y0D805Z0F

Motion - GP2Y0D810Z0F

Motion - GP2Y0D810Z0F

Motion - GP2Y0A60SZLF

 

○IRモーションセンサーが感知したモーションを検出する

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

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

 

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

イベント

説明

change

動きが検出されるたびに発生する

data

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

motionstart

動きが検出されたときに発生する

motionend

動きが停止したときに発生する

calibrated

動きを検出する準備ができたとき

 

 たとえば、モーションの開始と停止を検出するには、次のように書きます。

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

var board = new five.Board();

 

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

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

  // (7ピンをモーションセンサーの検出用に設定)

  var motion = new five.Motion(7);

 

  // calibrated」イベント: モーションセンサーの校正完了時に発生

  motion.on("calibrated", function() {

    console.log("calibrated", Date.now());

});

 

  // motionstart」イベント:動きを検出したときに発生

  motion.on("motionstart", function() {

    console.log("motionstart", Date.now());

  });

 

  // motionend」イベント:動きが停止したときに発生

  motion.on("motionend", function() {

    console.log("motionend", Date.now());

  });

});

 

Proximityオブジェクトを作成する

 距離センサー(超音波、赤外線、レーザー)のデータを取得するには、Proximityオブジェクトを使います。Proximityオブジェクトは、物理的なボード上に接続されている距離センサーを表すオブジェクトです。Proximityオブジェクトを作成するには、Proximityクラスのコンストラクタを使います。

 Pulse/PWMおよびアナログインターフェイスの距離センサーを使用するためのProximityオブジェクトを作成するには、「controller」プロパティに使用する距離センサーのデバイス名を、「pin」プロパティに距離センサーを接続するPulse/PWMピンの番号、またはアナログピンの名前を指定します。

new five.Proximity ({

  controller:  デバイス名,

  pin: ピン番号

}

 

I2Cインターフェイスの距離センサーの場合は、「controller」プロパティに使用する距離センサーのデバイス名を指定します。

new five.Proximity ({

  controller:  デバイス名,

}

 

Johnny-Fiveがサポートする距離センサーは、次のとおりです。

 

Pulse/PWMインターフェイス

★超音波

SR04またはHCSR04

SRF05

SeeedStudio Ultrasonic Range

Grove - Ultrasonic Ranger

RadioShack 2760342

 

◇アナログインターフェイス

★超音波

MB1000, LV-MaxSonar-EZ0

MB1010, LV-MaxSonar-EZ1

MB1003, HRLV-MaxSonar-EZ0

MB1230, XL-MaxSonar-EZ3

★赤外線

GP2Y0A21YK

GP2D120XJ00F

GP2Y0A02YK0F

GP2Y0A41SK0F

GP2Y0A710K0F

I2Cインターフェイス

★レーザー

LIDAR-Lite

★超音波

SRF10

HCSR04を使用したI2Cインターフェイスの モジュール

 

Pulse/PWM接続の距離センサーを使用するための準備をする

 ArduinoPulse/PWMインターフェイスの超音波距離センサーを使用するには、「PingFirmata」をボードに書き込む必要があります。「PingFirmata」のソースをコピーして、Arduino IDEからボードに書き込んでください。

 

PingFirmataのソース

https://gist.githubusercontent.com/rwaldron/0519fcd5c48bfe43b827/raw/f17fb09b92ed04722953823d9416649ff380c35b/PingFirmata.ino

 

距離センサーの測定データを取得する

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

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

 

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

イベント

説明

change

障害物が変更されたときに発生する

data

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

 

取得した値は、次のプロパティで参照することができます。

プロパティ

説明

cmcentimeters

センチメートルでの障害物までの距離

ininches

インチでの障害物までの距離

 

 たとえば、HCSR04で計測した障害物までの距離を、センチメートルとインチの両方で取得するには、次のように書きます。

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

var board = new five.Board();

 

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

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

  var proximity = new five.Proximity({

                      controller: "HCSR04",

                      pin: 7

                    });

 

  // データを取得して距離を表示

  proximity.on("data", function() {

    console.log("Proximity: ");

    console.log("  cm  : ", this.cm);

    console.log("  in  : ", this.in);

    console.log("-----------------");

  });

  // change」イベント:障害物が変更されたときに発生する

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

    console.log("The obstruction has moved.");

  });

});

 

・配線図

2016080602.png 


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

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

  var proximity = new five.Proximity({

                    controller: "HCSR04",

                    pin: 7,

                    freq: 500

                 });

 

スポンサーサイト

コメント

コメントの投稿

非公開コメント

ads

プロフィール

部員3号

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

kindle本

最新コメント

温度計

ads

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