Arduino資料一覧

Node.jsでArduino Unoにつないだ光センサー(LLS05-A)/CdSセル(GL5528)の値を読み取る

2016/12/24更新

対応バージョン: Node.js 4.2.6, Johnny-Five 0.9.58

Node.jsでArduino Unoにつないだ光センサー(LLS05-A)やCdSセル(GL5528)の値を読み取り、一定の暗さになったらLEDを点灯する仕組みを作る。

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チカ」を参照のこと。

参考サイト