Arduino 資料一覧
2016/12/24更新
対応バージョン: Node.js 4.2.6, Johnny-Five 0.9.58
Node.jsでArduino Unoにつないだ光センサー(LLS05-A)やCdSセル(GL5528)の値を読み取り、一定の暗さになったらLEDを点灯する仕組みを作る。
リニア光センサー LLS05-A (秋月電子通商)
CdSセル(1MΩ) GL5528 (秋月電子通商)
Node.jsを動かす母艦はUbuntu 16.04とする。
結線
センサー(ブレッドボードの右上)
光センサーの場合
Arduinoの5V電源ピン → 光センサーのアノード(長いピン) → 光センサーのカソード(短いピン) → Arduinoのアナログ"A0"ピン及び10KΩ抵抗経由のArduinoのGNDピン
CdSセルの場合
Arduinoの5V電源ピン → CdSセル → Arduinoのアナログ"A0"ピン及び10KΩ抵抗経由のArduinoのGNDピン
LED(ブレッドボードの左下)
Arduinoのデジタル13番ピン(5V) → 抵抗(330Ω) → LEDのアノード(長いピン) → LEDのカソード(短いピン) → ArduinoのGNDピン
※回路図と写真は光センサーのものだがCdSセルの場合も同じ。


ソース
以下のようなコードを書きNode.jsで実行する。
sensor.js
var five = require("johnny-five"); var board = new five.Board(); var before = 0; // 前回値 board.on("ready", function() { var sensor = new five.Sensor("A0"); // センサーデータ var led = new five.Led(13); // LED // センサーデータ取得 sensor.on("change", function() { var val = this.value; // センサーデータ console.log(before + " -> " + val); // センサーデータ出力(前回 + 今回) // センサーデータが前回値と変わったら if (val != before) { // センサーデータが10未満ならLED点灯、それ以上なら消灯 if (val < 10) { led.on(); } else { led.off(); } } // センサーデータ退避 before = val; }); });
実行
% node sensor.js 1483183307714 Device(s) /dev/ttyACM0 1483183307744 Connected /dev/ttyACM0 1483183311010 Repl Initialized >> 0 -> 253 253 -> 249 249 -> 244 244 -> 243 243 -> 245 :

プログラムを実行するとセンサーデータの前回値と今回値が左右に表示されるのでセンサーを覆って暗くすると(センサーデータが10を下回ると)LEDが点灯する。
Node.jsおよびJohnny-Fiveの導入については「Node.jsのJohnny-Fiveフレームワークを使ってArduino UnoでLチカ」を参照のこと。
関連資料・記事
参考サイト
Arduino (Wikipedia)
Arduino技術情報 (Qiita)
Arduino関連情報 (Device Plus)
Arduino記事一覧 (Think IT)
Node.js技術情報 (Qiita)
Johnny-Five技術情報 (Qiita)
エレクトロニクス豆知識 (ROHM)