○ループを実行する
ループ(繰り返し処理)を実行するには、「loop」メソッドを使います。間隔はミリ秒(ms)単位で指定します。コールバック関数には、繰り返す処理を書きます。
loop (間隔, コールバック関数())
|
たとえば、500ミリ秒間隔でLEDの点灯/消灯を繰り返すには、次のように書きます。
var five = require("johnny-five");
var board = new five.Board();
board.on("ready", function() {
var
state = 0;
this.pinMode(13,
five.Pin.OUTPUT);
// 500ミリ秒間隔で処理(LEDの点灯/消灯)を繰り返す
this.loop(500,
function() {
board.digitalWrite(13, (state ^= 1));
});
});
|
○一定時間待ってから処理を実行する
一定時間待ってから処理を実行するには、「wait」メソッドを使います。待ち時間はミリ秒(ms)単位で指定します。コールバック関数には、実行する処理を書きます。
wait (待ち時間, コールバック関数())
|
たとえば、13ピンを1秒((1000ミリ秒)後にLOW(0)に切り替えるには、次のように書きます。
var five = require("johnny-five");
var board = new five.Board();
board.on("ready", function()
{
// 13ピンをデジタル出力に設定
this.pinMode(13,
five.Pin.OUTPUT);
// 13ピンをオン(HIGHを出力)
this.digitalWrite(13,
1);
// 1000ミリ秒後に13ピンをオフ(LOWを出力)
this.wait(1000,
function() {
board.digitalWrite(13, 0);
});
});
|
○REPLを使う
REPL(Read-Eval-Print-Loop)は、対話型の実行環境です。REPLにオブジェクトを登録するには、REPLの「inject」メソッドを使います。REPLにオブジェクトを登録することで、オブジェクトの持つメソッドをコマンドラインから実行したり、オブジェクトの持つプロパティを参照したりすることができます。
たとえば、REPLにledオブジェクトを登録するには、次のように書きます。
var five = require("johnny-five");
var board = new five.Board();
board.on("ready", function() {
this.repl.inject({
// ledオブジェクトをREPLに登録
led: new five.Led(13)
});
});
|
ledオブジェクトの持つ「on」メソッドを実行するには、コマンドプロンプトから、次のように入力します。
led.on()
|
また、REPLには、独自のメソッドを定義して登録することもできます。たとえば、LEDを点灯/消灯する「on」/「off」メソッドを登録するには、次のように書きます。
var five = require("johnny-five");
var board = new five.Board();
board.on("ready", function()
{
// ledオブジェクトを作成
var
led = new five.Led(13);
this.repl.inject({
// LEDをオン/オフするメソッドを登録
on: function()
{
led.on();
}
off: function()
{
led.off();
}
});
});
|
定義したメソッドを実行するには、コマンドプロンプトから、「on()」または「off()」と入力します。
○ボードの切断を検出する
スクリプトを[Ctrl]+[C]で中断する際には、「exit」イベントが発生します。ボードから切断される前に必要なクリーアップを行うには、このハンドラを使います。たとえば、スクリプトを[Ctrl]+[C]で中断したときに、LEDを消灯させるには、次のように書きます。
var five = require("johnny-five");
var board = new five.Board();
board.on("ready", function()
{
var
led = new five.Led(13);
led.on();
// [Ctrl]+[C]で中断したときにLEDを消灯
this.on("exit", function() {
led.off();
});
});
|
0 件のコメント:
コメントを投稿