○Compassオブジェクトを作成する
電子コンパスのデータを取得するには、Compassオブジェクトを使います。Compassオブジェクトは、物理的なボードに接続された単一の電子コンパスや磁力計を表すオブジェクトです。Compassオブジェクトを作成するには、Compassクラスのコンストラクタを使います。「controller」プロパティにデバイス名を指定します。
new five.Compass({
controller: デバイス名
});
|
○電子コンパスの測定データを取得する
電子コンパスの測定データを取得するには、イベントハンドラを使います。イベントハンドラは、「on」メソッドを使って書きます。イベントにはイベント名を、ハンドラにはイベント発生時に実行する処理(コールバック関数)を指定します。
on("イベント", ハンドラ)
|
Compassオブジェクトで発生するイベントは、次のとおりです。
イベント
|
説明
|
change
|
方位が変更されたときに発生する
|
data
|
25ミリ秒(「freq」プロパティで変更可)間隔で発生する
|
取得した値は、次のプロパティで参照することができます。
プロパティ
|
プロパティ
|
heading
|
北を基準にした方位(0~360)
|
bearing
|
関連するベアリング情報のプロパティのオブジェクト
|
・bearingオブジェクト
プロパティ
|
説明
|
name
|
方位名(例:「North」「South」「Wast」「Eest」)
|
abbr
|
短縮した方位名(例:「N」「S」「E」「W」)
|
low
|
32方位(方位間隔11.15)での現在の方角の最小角度
|
mid
|
32方位(方位間隔11.15)での現在の方角の中間角度
|
high
|
32方位(方位間隔11.15)での現在の方角の最大角度
|
var five = require("johnny-five");
var board = new five.Board();
board.on("ready", function()
{
// Compassオブジェクトを作成
var
compass = new five.Compass({
controller: "HMC5883L"
});
// データ取得
compass.on("data", function()
{
console.log(" heading : ",
Math.floor(this.heading));
console.log(" bearing : ",
this.bearing.name);
console.log("--------------------------------------");
});
});
|
・配線図
○電子コンパスのデータの読み取り間隔を設定する
電子コンパスのデータの読み取り間隔(「data」イベントの間隔)を設定するには、オプションの「freq」プロパティを使います。値にはミリ秒単位の時間を指定します。たとえば、5000ミリ秒(5秒)間隔でデータを読み取るには、次のように書きます。
var
compass = new five.Compass({
controller: "HMC5883L"
freq: 5000
});
|
○Gyroオブジェクトを作成する
ジャイロセンサーの測定データを取得するには、Gyroオブジェクトを使います。Gyroオブジェクトは、物理的なボードに接続された単一のジャイロセンサーを表すオブジェクトです。Gyroオブジェクトを作成するには、Gyroクラスのコンストラクタを使います。
アナログインターフェイスのジャイロセンサーを使用するためのGyroオブジェクトを作成するには、オプションの「pins」プロパティにジャイロセンサーのX、Y、およびZ(オプション)出力を接続するアナログピンの名前を配列で指定します。
new five.Gyro ({
pins: [x, y, z]
});
|
I2Cインターフェイスのジャイロセンサー場合は、「controller」プロパティに使用するジャイロセンサーのデバイス名を指定します。たとえば、MPU6050を使用する場合は、次のように書きます。
new five.Gyro({
controller: "MPU6050"
});
|
○オプションを指定してGyroオブジェクトを作成する
Gyroオブジェクトは、次のオプションを指定して作成することができます。
・アナログオプション(controller: "ANALOG")
プロパティ
|
タイプ
|
値/説明
|
既定値
|
sensitivity
|
数値
|
感度
|
|
resolution
|
数値
|
分解能(デバイスにより異なる)
|
4.88
|
・MPU6050オプション(controller: "MPU6050")
プロパティ
|
タイプ
|
値/説明
|
既定値
|
sensitivity
|
数値
|
感度(±250の範囲)
|
131
|
○ジャイロセンサーの測定データを取得する
ジャイロセンサーの測定データを取得するには、イベントハンドラを使います。イベントハンドラは、「on」メソッドを使って書きます。イベントにはイベント名を、ハンドラにはイベント発生時に実行する処理(コールバック関数)を指定します。
on("イベント", ハンドラ)
|
Gyroオブジェクトで発生するイベントは、次のとおりです。
イベント
|
説明
|
change
|
ジャイロの値が変更されたときに発生する
|
data
|
25ミリ秒間隔で発生する
|
取得した値は、次のプロパティで参照することができます。
プロパティ
|
説明
|
isCalibrated
|
デバイスのキャリブレーション状態
|
pitch
|
ピッチ角を含むオブジェクト
|
roll
|
ロール角を含むオブジェクト
|
yaw
|
ヨーレートの値を含むオブジェクト
|
rate
|
X、Y、およびZの速度値を含むオブジェクト.
|
x
|
x方向加速度
|
y
|
y方向加速度
|
z
|
z方向加速度
|
var five = require("johnny-five");
var board = new five.Board();
board.on("ready", function()
{
// gyroオブジェクトを作成
var
gyro = new five.Gyro({
controller: "MPU6050"
})
// データ取得
gyro.on("change", function()
{
console.log("gyro");
console.log(" x : ",
this.x);
console.log(" y : ",
this.y);
console.log(" z : ",
this.z);
console.log(" pitch : ", this.pitch);
console.log(" roll : ", this.roll);
console.log(" yaw : ", this.yaw);
console.log(" isCalibrated : ",
this.isCalibrated);
console.log("--------------------------------------");
});
});
|
・配線図
○GPSオブジェクトを作成する
GPS(Global Positioning System:全地球測位システム))受信機のデータを取得するには、GPSオブジェクトを使います。GPSオブジェクトは、物理的なボードに接続された単一のGPSを表すオブジェクトです。
Johnny-FiveのサポートするGPSデバイスは、次のとおりです。
・MediaTek MT3339
G-Top LadyBird 1
(PA6H)
GPSオブジェクトを作成するには、GPSクラスのコンストラクタを使います。引数には、シリアル通信の「RX」ピンと「TX」に使用するピンの番号を指定します。
new five.GPS([RX, TX]);
|
たとえば、Arduinoの11ピンをRX、10ピンをTXに使用する場合は、次のように指定します。
new five.GPS([11, 10]);
|
オプションの「pins」プロパティでピン番号を指定する場合は、次のように書きます。
new five.GPS({
pins:
{rx: 11, tx: 10}
})
|
new five.GPS({
pins:
{rx: 11, tx: 10},
breakout: "ADAFRUIT_ULTIMATE_GPS"
});
|
・配線図
GPSとArduinoのTX、RXはクロス接続になることに注意してください。
○GPSの測定データを取得する
GPSの測定データを取得するには、イベントハンドラを使います。イベントハンドラは、「on」メソッドを使って書きます。イベントにはイベント名を、ハンドラにはイベント発生時に実行する処理(コールバック関数)を指定します。
on("イベント", ハンドラ)
|
GPSオブジェクトで発生するイベントは、次のとおりです。
イベント
|
説明
|
message
|
有効なメッセージ(NMEAセンテンス)を受信したときに発生する
|
operations
|
衛星オペレーションの詳細を受信したときに発生する
|
acknowledge
|
「acknowledge」メッセージを受信したときに発生する
|
unknown
|
有効ですが、認識されないメッセージを受信したときに発生する
|
change
|
位置が変更されたときに発生する
|
navigation
|
速度や方向が変更されたときに発生する
|
取得した値は、次のプロパティで参照することができます。
プロパティ
|
説明
|
latitude
|
現在の緯度
|
longitude
|
現在の経度
|
altitude
|
現在の高度
|
sat
|
衛星オペレーションの詳細{PDOP、HDOP、VDOP}
|
course
|
現在のコース
|
speed
|
現在の対地速度
|
time
|
最後の修正の時間
|
たとえば、経度と緯度を取得するには、次のように書きます。
var five = require("johnny-five");
var board = new five.Board();
board.on("ready", function()
{
// GPSオブジェクトを作成
var
gps = new five.GPS([11, 10]);
// 経度、緯度を取得
gps.on("change", function()
{
console.log("position");
console.log(" latitude : ", this.latitude);
console.log(" longitude : ", this.longitude);
console.log("--------------------------------------");
});
});
|
○GPS測位の更新頻度を設定する
GPS測位の更新頻度は、オプションの「frequency」プロパティで設定します。値には周波数をHz単位で指定します。既定値は「1」です。たとえば、更新頻度を10Hzに設定するには、次のように書きます。
var
gps = new five.GPS(
pins: {rx: 11, tx: 10},
frequency :10
});
|
○GPS測位データの小数点以下の桁数を設定する
GPS測位データの小数点以下の桁数は、オプションの「fixed」で設定します。既定値は、「6」です。たとえば、GPS測位データの小数点以下の桁数を2桁に設定するには、次のように書きます。
var
gps = new five.GPS({
pins: {rx: 11, tx: 10},
fixed :2
});
|
○GPSをハードウェアシリアルポートに接続して使用する
GPSは通常、ソフトウェアシリアルを使って、ボーレート9600bpsで通信を行います。これ以外の通信速度で通信したい場合は、ハードウェアシリアルポートを使用します。ハードウェアシリアルポートを使用するには、オプションの「port」プロパティにシリアルポート名を、「baud」にボーレートを指定します。
たとえば、Arduino MEGA 2560のハードウェアシリアルポート3を使って、4800bpsで通信するには、次のように書きます。
var
gps = new five.GPS({
port: this.io.SERIAL_PORT_IDs.HW_SERIAL3,
baud :4800
});
|
○GPSのチップセットにコマンドを送信する
GPSのチップセットにコマンド(NMEAコマンド)を送信するには、「sendCommand」メソッドを使います。引数には送信するコマンドを文字列で指定します。チェックサムと改行コード(CRLF)は自動的に追加されます。
sendCommand(コマンド文字列)
|
NMEAコマンドについては、次のWebページを参考にしてください。
0 件のコメント:
コメントを投稿