Edisonのボタン押下をイベントで取得し、LEDを制御
D2にボタンモジュールをつなぎます
XDK上で on board LED blinkのテンプレートで新規プロジェクトを作成
package.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
{ "name" : "hoge" , "version" : "1.0.0" , "description" : "" , "main" : "index.js" , "scripts" : { "test" : "echo \"Error: no test specified\" && exit 1" }, "author" : "" , "license" : "ISC" , "dependencies" : { "cylon" : "^0.21.2" , "cylon-firmata" : "^0.18.0" , "cylon-intel-iot" : "^0.4.0" } } |
main.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
var Cylon = require( 'cylon' ); var turnOn = true ; Cylon .robot() .connection( 'edison' , { adaptor: 'intel-iot' }) .device( 'led' , { driver: 'led' , pin: 13, connection: 'edison' }) .device( 'touch' , { driver: 'button' , pin: 2, connection: 'edison' }) .on( 'ready' , function (my) { my.touch.on( 'push' , function () { if (!turnOn){ my.led.turnOn(); console.log( 'push on' ); } else { my.led.turnOff(); console.log( 'push off' ); } turnOn = !turnOn; }); }); Cylon.start(); |
→Pin2とD2はどういう関係あるのか良くわからないね。
プロジェクトをアップロード(cylonモジュールのインストールダイアログが自動的に表示される。)
installした場所:
[root@edison1_pepper:~/.node_app_slot]$ lsal
201 -rw-r--r-- 1 root root 36 Mar 25 17:55 .appGuid
211 -rw-rw-r-- 1 root root 2.4K Mar 25 17:53 README.md
4491 -rw-rw-r-- 1 root root 5.0K Mar 25 17:53 icon.png
4492 -rw-rw-r-- 1 root root 1.4K Mar 25 17:53 main.js
4609 drwxr-xr-x 7 root root 4.0K Mar 25 16:25 node_modules/
4493 -rw-rw-r-- 1 root root 252 Mar 25 17:53 package.json
4494 drwxr-xr-x 2 root root 4.0K Mar 25 17:53 xdk/
→node_app_slotには現在のプロジェクト内容しかないようです。
他のプロジェクトをアップロードすると、node_app_slot配下は全部上書きされてしまうようです。
しかも同じプロジェクトを再アップロードしたら、
cylonのモジュールは全部再ダンロードらしい。
[root@edison1_pepper:~/.node_app_slot]$ ps | grep node
286 root 38224 S node /usr/lib/edison_config_tools/edison-config-server.js
291 root 35964 S /usr/bin/node /opt/xdk-daemon/main.js
305 root 72240 S /usr/bin/node /opt/xdk-daemon/current/appDaemon.js
427 root 37772 S /usr/bin/node /node_app_slot
xdk上で実行のボタンをクリックすると、edison側ではnode_app_slotというコマンドが実行されるようです。
明確に停止しないかぎりは、ずっと動いるようです。
[root@edison1_pepper:~/.node_app_slot/node_modules]$ lsal
4610 drwxr-xr-x 6 root root 4.0K Mar 25 17:54 cylon/
4620 drwxr-xr-x 6 root root 4.0K Mar 25 17:54 cylon-firmata/
4628 drwxr-xr-x 8 root root 4.0K Mar 25 17:54 cylon-gpio/
4640 drwxr-xr-x 7 root root 4.0K Mar 25 17:54 cylon-i2c/
4651 drwxr-xr-x 6 root root 4.0K Mar 25 17:54 cylon-intel-iot/
npmがインストールしたモジュールについて:
ローカルインストール
開発中のアプリが依存するライブラリをインストールする場合に利用します。
インストールしたモジュールは、プロジェクト内のみで使えます。
同じマシンで開発している他のプロジェクトからは使えないので、それぞれで別のバージョンを使用したりできます。
モジュールは、/node_modules にインストールされます。
[root@edison1_pepper:~/.node_app_slot]$ npm ls
→現在のプロジェクト(現在のディレクトリ)配下でローカルインストールしたモジュールの一覧を出す。
OnboardLEDBlink@0.0.0 /home/root/.node_app_slot
├─┬ cylon@0.21.2
│ ├── async@0.9.0
│ ├─┬ body-parser@1.9.0
[root@edison1_pepper:~/.node_app_slot]$ node main.js
I, [2016-03-25T09:10:32.693Z] INFO -- : Initializing connections.
I, [2016-03-25T09:10:32.707Z] INFO -- : Initializing devices.
I, [2016-03-25T09:10:33.402Z] INFO -- : Starting connections.
I, [2016-03-25T09:10:33.407Z] INFO -- : Starting devices.
I, [2016-03-25T09:10:33.425Z] INFO -- : Working.
push off
push on
push off
push on
→XDKじゃなくても、直接edisonでmain.jsを実行すればいい。