○Servoオブジェクトを作成する
サーボモーターを制御するには、Servoオブジェクトを使います。Servoオブジェクトは、物理的なボードに接続された単一のサーボモーターを表すオブジェクトです。Servoオブジェクトを作成するには、Servoクラスのコンストラクタを使います。引数には、サーボモーターのパルス端子を接続するピンの番号を指定します。
new five.Servo(ピン番号);
|
オプションの「pin」プロパティでピン番号を指定する場合は、オブジェクト形式(JSON)で次のように書きます。
new five.Servo ({
pin: ピン番号
})
|
たとえば、10ピンに接続したサーボモーターを制御するServoオブジェクトを作成するには、次のように指定します。
new five.Servo(10);
|
・配線図
I2Cインターフェイスの「PCA9685」を使用する場合は、「controller」プロパティにデバイス名「PCA9685」を、「pin」プロパティにサーボモーターが接続されているPCA9685のピン番号を指定します。
new five.Servo({
controller: "PCA9685",
pin: 0
});
|
・配線図
○オプションを指定してServoオブジェクトを作成する
Servoオブジェクトは、次のオプションを指定して作成することができます。
・一般的なオプション
プロパティ
|
タイプ
|
値/説明
|
既定値
|
range
|
配列
|
動きの範囲、[最小角度, 最大角度]
|
[0, 180]
|
type
|
文字列
|
サーボのタイプ、「standard」または「continuous」
|
standard
|
startAt
|
数値
|
開始角度(0~180)
|
90
|
offset
|
数値
|
オフセット値
|
|
invert
|
真偽
|
「true」で反転、「false」で正転
|
false
|
center
|
真偽
|
「true」で中央ポジションに動かす
|
false
|
・デバッグオプション
プロパティ
|
タイプ
|
値/説明
|
既定値
|
debug
|
真偽
|
「true」でデバッグモード
|
false
|
・連続(continuous)サーボオプション
プロパティ
|
タイプ
|
値/説明
|
既定値
|
deadband
|
配列
|
デットバンドの範囲、[最小角度, 最大角度]
|
[90, 90]
|
・PCA9685オプション(controller: "PCA9685")
プロパティ
|
タイプ
|
値/説明
|
既定値
|
address
|
数値
|
I2Cデバイスのアドレス
|
0x40
|
○サーボモーターを指定した角度に設定する
サーボモーターを指定した角度に設定するには、「to」メソッドを使います。角度に0~180の数値を指定します。
to(角度 [, 時間 [, レート]])
|
角度に0~180の数値を指定します。オプションの時間には、指定した角度に到達するまでの時間(ミリ秒単位)を、レートには指定した角度に到達するまでのステップ数を指定します。
var five = require("johnny-five");
var board = new five.Board();
board.on("ready", function()
{
// Servoオブジェクトを作成
// (10ピンをサーボモーター制御用に設定)
var
servo = new five.Servo(10);
// 0度の位置に動かす
servo.to(0);
this.wait(1000,function(){
// 2000ミリ秒かけて90度の位置まで動かす
servo.to(90,2000);
});
this.wait(5000,function(){
// 1000ミリ秒、5ステップで180度の位置まで動かす
servo.to(180,1000,5);
}
|
○サーボモーターを最小/最大角度に設定する
サーボモーターを最小角度に設定するには、「min」メソッドを、最大角度に設定するには「max」メソッドを使います。最小角度は「0」、最大角度は「180」が既定値です。
var
servo = new five.Servo(10);
// 0度に設定
servo.min();
// 180度に設定
servo.max();
|
オプションの「range」プロパティで最小/最大角度が指定されている場合、その位置に設定されます。
var
servo = new five.Servo({
pin: 10,
range: [ 45,
135
]
});
// 45度に設定
servo.min();
|
○サーボモーターをセンター位置に設定する
サーボモーターをセンター位置(既定は90度)に設定するには、「center」メソッドを使います。
center([ 時間 [, レート]])
|
オプションの時間には、センターに到達するまでの時間(ミリ秒単位)を、レートにはセンターに到達するまでのステップ数を指定します。
// 90度に設定
servo.center();
// 2000ミリ秒かけてセンターに設定
servo.center (2000);
//
1000ミリ秒、5ステップでセンターに設定
servo.center(1000,5);
|
オプションの「range」プロパティで最小/最大角度が指定されている場合、その範囲の中心に設定されます。
var
servo = new five.Servo({
pin: 10,
range: [ 40,
80]
});
// 60度に設定
servo.center();
|
9.6 サーボモーターをホームポジションに設定する
サーボモーターをホームポジションに設定するには、「home」メソッドを使います。ホームポジションは、「startAt」プロパティで設定します。規定値は90度です。
var
servo = new five.Servo(10);
// 90度に設定
servo.home();
|
var
servo = new five.Servo({
pin: 10,
startAt: 20
});
// 20度に設定
servo.home();
});
|
○サーボモーターをスイープする
サーボモーターをスイープするには、「sweep」メソッドを使います。引数なしで実行した場合は、最小値と最大値の間でサーボモーターをスイープします。
var
servo = new five.Servo(10);
// サーボモーターをスイープ
servo.sweep();
|
指定の範囲でサーボモーターをスイープするには、引数に最小値と最大値を配列([最小値, 最大値])で指定します。
// 45~135の範囲内でサーボモーターをスイープ
servo.sweep([45,135]);
|
インターバル(スイープの間隔)やステップ数を指定するには、引数にオプションオブジェクト(JSON)を指定します。指定できるオプションは、次のとおりです。
オプション
|
説明
|
range
|
スイープの範囲、[最小角度, 最大角度]
|
interval
|
1回のスイープ(最小値から最大値まで)に費やす時間(ミリ秒)
|
step
|
1回のスイープ(最小値から最大値まで)に費やすステップ数
|
たとえば、45~135度の範囲を1000ミリ秒かけて、10ステップでスイープするには、次のように書きます。
// 45~135度の範囲を1000ミリ秒かけて、10ステップでスイープ
servo.sweep({
range: [45, 135],
interval: 5000,
step: 10
});
});
|
○サーボモーターの動きを停止する
サーボモーターの動きを停止するには、「stop」メソッドを使います。たとえば、5秒後にサーボモーターのスイープを停止するには、次のように書きます。
var
servo = new five.Servo(10);
// サーボモーターをスイープ
servo.sweep();
// 5秒後に
this.wait(5000,function(){
// サーボモーターを停止
servo.stop()
});
});
|
○連続サーボモーターを時計回り/反時計回りに回転させる
連続(Continuous)サーボモーターを時計回りに回転するには、「cw」メソッドを、時計回りに回転させるには「ccw」メソッドを使います。引数はスピードを0から1の範囲の数値で指定します。
var
servo = new five.Servo({
pin: 10,
type: "continuous"
});
// フルスピードで時計回りに回転
servo.cw(1);
this.wait(5000,function(){
//フルスピードで反時計回りに回転
servo.ccw(1);
});
});
|
○複数のサーボモーターをまとめて制御する
複数のサーボモーターをまとめて制御するには、Servosオブジェクトを使います。Servosオブジェクトは、物理的なボードに接続された複数のサーボモーターを表すオブジェクトのコレクションです。Servosオブジェクトを作成するには、Servosクラスのコンストラクタを使います。引数には、サーボモーターを接続するピン番号またはServoオブジェクトの配列を指定します。
new five.Servos(配列);
|
たとえば、9、10、11ピンに接続された3つのサーボモーターを制御するServosオブジェクトを作成するには、次のように書きます。
new
five.Servos ([ 9, 10, 11]);
|
オプションプロパティを指定してServosオブジェクトを作成するには、オブジェクト形式(JSON)で次のように書きます。
new five.Servos([{
pin: 9,
center: true
}, {
pin: 10,
range: [20,140],
startAt: 20
}]);
|
Servosオブジェクトのオプションのプロパティ、およびAPIのメソッドはServoオブジェクトと同じです。
たとえば、2つのサーボモーターをスイープするには、次のように書きます。
var five = require("johnny-five");
var board = new five.Board();
// Servosオブジェクト(Servoオブジェクトのコレクション)を作成
// (10,11ピンをサーボモーター制御用に設定)
var servos
= new five.Servos([10,11]);
// すべてのサーボモーターをスイープ
servos.sweep();
});
|
○特定のサーボモーターを制御する
Servosオブジェクトの特定のサーボモーターを参照するには、配列のインデックスを指定します。インデックスは、ピン番号の記述順に0から割り当てられる連番です。たとえば、インデックスが「0」のサーボモーターを180度に設定するには、次のように書きます。
var
servos = new five.Servos([10,11]);
// 10ピン(インデックス「0」)のサーボモーターを180度回転
servos[0].to(180);
|
0 件のコメント:
コメントを投稿