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を実行すればいい。