2017.05.19
Lab
ArduinoとLeap Motionの連携でLチカ
今回はArduinoとLeap Motionを連携させる方法を紹介します。
動作環境は Mac(10.12)、Node v6.91、npm v3.10.8です。
Node.jsを使うまでのセットアップは長くなるので、本記事では割愛します。
npmで必要なパッケージをインストール
ターミナルを起動して、下記コマンドでnpm初期設定。
$npm init -y
次に、必要なパッケージをインストールします。
$npm install leapjs,johnny-five --save-dev
今回使うパッケージは2つです。
・Johnny-Five
http://johnny-five.io/
Arduinoをはじめ、様々なマイコンに対応したJavaScript Roboticsフレームワーク
・LeapJS
https://developer-archive.leapmotion.com/javascript
Leap MotionをJavaScriiptから扱うためのパッケージ
どちらも少ないコードで簡単に書くことができます。
実装してみる
それでは、実装です。
今回作成するファイルは一つだけ。
「app.js」という名前のファイルを作成します。
内容は下記のようになります。
//必要なライブラリを読み込みます
var Leap = require("leapjs");
var five = require('johnny-five');
//Leap Motionコントローラー
var controller = new Leap.Controller();
controller.connect();
var leapAction;
controller.on('gesture', function (gesture) {
switch (gesture.type) {
//円を描くとLEDストップ
case 'circle':
leapAction = setTimeout(ledOff,50);
break;
//スワイプされるとLEDスタート
case 'swipe':
leapAction = setTimeout(ledOn,50);
break;
}
});
//LED
var led;
var isLedStart;
//ボード
var board = new five.Board();
board.on('ready', function() {
led = new five.Led(13);
});
var ledAction;
//LEDを止める
function ledOff(){
if(led && isLedStart){
led.off();
ledAction = setTimeout(function(){
isLedStart = false;
},500);
}
}
//LEDを光らせる
function ledOn(){
if(led && !isLedStart){
led.on();
ledAction = setTimeout(function(){
isLedStart = true;
},500);
}
}
あとは、下記コマンド打つと実行されます。
$node app.js
実際の動作イメージです