いままではFlashやProcessingを使ってPCとArduinoを連携させていましたが、
Node.jsでも結構簡単に制御できることを知ったのでメモしておきます。
【用意するもの】
・Arduino
・Node.jsの動く環境
・duino( https://github.com/ecto/duino )
- なんとかしてNode.jsの動く環境を用意する
- duinoをインストールする
- duino/src/du/du.ino をArduinoに書き込む
- LEDをA0ピンとGNDピンに繋ぐ
- duino/examples/led.jsを実行
これでLDEが点滅するはずです。
ソースコードをみてみましょう。
// duinoのインポート
var arduino = require('../');
// Arduinoボードオブジェクトの作成
var board = new arduino.Board({
debug: true // デバッグモードをON
});
// LEDオブジェクトの作成
var led = new arduino.Led({
board: board, // ボードの選択
pin: "A0" // 出力ピンの選択
});
// ボードの準備完了に対してコールバック関数を登録
board.on('ready', function(){
led.blink(); // LEDを点滅させる
});
あとは、Arduinoに書き込んだ duino/src/du/du.ino がなんとかしてくれます。
おそらくArduinoのAPIをJSで叩けるようにしてくれているのでしょう。
ライブラリのおかげで非常に直感的にかけるのではないでしょうか。
// 使用するピンを変数に代入
int led = A0;
// セットアップ(1度だけ実行)
void setup() {
// ピンを出力に設定
pinMode(led, OUTPUT);
}
// ループ処理(電源供給しているかぎりループで実行)
void loop() {
analogWrite(led, 255); // LEDをON
delay(1000); // 1000ms待機
analogWrite(led, 0); // LEDをOFF
delay(1000); // 1000ms待機
}
と、こんなこんなに感じになります。
お気づきの方も多いかと思いますが、
実はこの段階では、コード自体にそんなに大差はありません。
むしろNode.jsを使わなければ電源供給のみで動作させることができるので、
この程度のコードであればArduinoのみで動かしたほうがよさげです。
例えば、Twitterと連動させてLEDを光らせたいときなど、
サーバサイドとの連携が必要なときこそNode.js、duinoの出番です。
用途によってうまく使い分けていきたいと思います。
※ Arduino UNO, Macbook Pro (OS 10.7.5), Node.js (v0.8.22) にて確認