Edited at

ArduinoをNode.jsで制御してLチカをする

More than 1 year has passed since last update.

今回はArduinoを制御してみたいと思います。

ただArduinoってC言語風のArduino言語で書くし、工学系のガチな人たちがいじるイメージ。。。

でも実はweb系の人でもいじれるっぽいんです!それがこちら :tada:

http://nodebots.io/

おおお、「Node」なんか聞いたことあるぞ。

そうです、Node.jsです。

johnny-five というライブラリを使うとNode.jsでArduinoを制御できるそうです。

これはweb系の人には朗報ですね!

しかも、、、!



出典: tableflip/nodebot-workshopより

おおお、「なんか教科書っぽい」

そうです、Node.jsに関連するソフトウェアを無料で学習できる Node School というオープンソースの学習ツールです。

このNode Schoolがjohnny-fiveでArduinoの制御方法を勉強できる学習ツールを出しているんです。

それがこちら。https://github.com/tableflip/nodebot-workshop

なんか感心するほど、ほとんど揃ってますねw

あとは、実際に制御するArduinoが必要なわけですが、もちろんありました。

https://dotstud.io/projects/nodebots-seeeduino-for-beginners/



出典: NodeBot kit for Beginners ver.JP | dotstudioより

購入ページでセットを買うことができました。

これで必要なものが揃ったので早速始めたいと思います。


環境設定

ではサクサク始めます

$ mkdir nodebot

$ cd nodebot
# グローバルにnodebot-workshopをダウンロードするのは嫌だったのでローカルにダウンロードします
$ npm init -y
$ npm i -S nodebot-workshop
$ nodebot-workshop

こういう画面が出力されましたか?もし英語になった場合は、言語を選択できるので日本語に設定しましょう。カーソル↑↓またはjkで上下に移動できます。

これで環境設定は完了ですね。nodebotが手元にある人はArduinoをUSBコードでPCに繋げてください。


Lチカ

ではLチカをやってみます。

Lチカ を選択すると以下のようなmarkdownが出力されました。用意周到ですねw

あとはこれを読んでやってみましょう。すごい丁寧に誘導されているので大丈夫でしょう!ドキュメントもありますし

コードを書けたら、一旦テストを実行しましょう。

$ nodebot-workshop verify l-chika.js

1481897226692 Device(s) /dev/cu.usbserial-FAKEID
1481897226715 Connected /dev/cu.usbserial-FAKEID
1481897227119 Repl Initialized
>> 回答をテストしています。お待ちください。。。
✓ Boardインスタンスが作成されました。

✓ LEDインスタンスが作成されました。

✓ LEDがpinに接続されました。

✓ LED is flashing once a second

✓ LED is flashing once a second

✓ Pin 2 was set to OUTPUT mode

✓ Pin 13 was turned on

✓ Pin 13 was turned off

# おめでとう! 「Lチカ」に対するあなたの回答は合格です!

あと8個のチャレンジが残っています。 メニューを表示するには
'nodebot-workshop' と入力してください。

こうなれば正解です!実際はこの検証が通らなくてもLチカはできましたw

一応回答を載せておきます。

var five = require('johnny-five');

var board = new five.Board();
board.on('ready', function() {
var led = new five.Led(13);
led.strobe(1000);
});


おわり

こんな感じで結構気軽にマイコンを制御できるので、よかったらやってみてください!

僕は家で家族に年越しサプライズするために、黙々実装してますw

ではでは、良いお年を! :tada: