いままでは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) にて確認