Screen Shot 2015-07-14 at 7.05.20 PM

[Mac]Cylon.jsつかってみる – Arduinoでリープモーション 2

[Mac]Cylon.jsつかってみる – Arduinoでリープモーション 2

MacにつながったLeapMotionからシリアル通信でArduino Uno R3を操作するのつづき。

IMG_1632

Gort

いろんなデバイスのCLIインターフェースで、これを使ってアルディーノのFirmataファームウェアをアップデートする
どっかでみたサンプル

gort scan usb                                                      
/dev/cu.serial1         /dev/tty.serial1                                
/dev/cu.usbmodem14a31   /dev/tty.usbmodem14a31                          
gort arduino upload firmata /dev/cu.usbmodem14a31                     

Cylon.js

LeapMotionの公式で説明のってたCylon.jsをダウンロードする、ロボティクスのフレームワークみたいでたくさんのプラットフォームをサポートしてた。

npm install cylon-firmata cylon-gpio cylon-i2c cylon cylon-leapmotion --save
cat <<_EOT > index.js
/**
 * A module control Rodeo Machine
 * @module cylon
 */
var Cylon = require('cylon');
const ARDUINO_PIN = 13;
const PORT_USB = '/dev/tty.usbmodem14a31'; // GORTでスキャンしたポートを設定する

Cylon.robot({
    connections: {
        leap: { adaptor: 'leapmotion' },
        arduino: { adaptor: 'firmata', port: PORT_USB }
    },
    devices: {
        servo: { driver: 'servo', pin: ARDUINO_PIN, connection: 'arduino' }
    },
    work: function (my) {
        const ANGLE = 46;
        const RESET_ANGLE = 0;
        var isPushed = true;
        my.leap.on('frame', function (frame) {
            if (frame.hands.length > 0 && isPushed) {
                my.servo.angle(ANGLE);
                isPushed = false;
            } else if (frame.hands.length == 0) {
                my.servo.angle(RESET_ANGLE);
                isPushed = true;
            }
        });
    }
}).start();
_EOT
node index.js

I, [2015-07-17T23:42:55.117Z]  INFO -- : [Robot 1] - Starting connections.
Optimized for desktop usage.
I, [2015-07-17T23:42:58.489Z]  INFO -- : [Robot 1] - Starting devices.
I, [2015-07-17T23:42:58.490Z]  INFO -- : [Robot 1] - Working.

サーボ動いた!

PWMがかんたん。
IMG_1650

参考サイトさま

About the author
  • コメントを残す