会社に使われていないArduino Uno R3があって、貸してもらえることになりました。
ArduinoはJavaScriptで動かせるらしいので、ぜひやってみたい。
とりあえずJSでどうこうするよりも前に、まともに配線できないと困るので、まずは渡された本に書いてあった通りに配線して、サンプルコードをそのまま書き込んでみた。
光った! pic.twitter.com/kSc9jQPNgw
— natsumi_m31 (@natsumi_m31) 2015, 11月 13
すごく簡単だった。
そりゃ、本のとおりにやってるだけだもん。
正直、初のLチカにあまり感動できなかった…
上記の記事でNode.jsに触れてみたので、せっかくだからNode.jsでArduinoを動かしたい。
ってことでさっそくぐぐってみました。
「Arduino」「JavaScript」「Node.js」とかでぐぐると…
- node.jsとjohnny-fiveを使って、JavaScriptでarduinoを操作してみる
- JavaScriptでArduinoをコントロール ― 第1回 Lチカ(LEDチカチカ)させてみよう!
- Johnny-FiveでJavaScript Roboticsをはじめる
まー出るわ出るわ
みんな「Johnny-five」って言ってる。
ここは素直に使ってみることにします。
firmata焼いてjohnny-fiveもインストールしたけど、Windowsだからnew board()にポート名も入れたんだけど、ぜんぜん動かないんだけど、Cannot find module 'firmata' って言われるんだけど、Windows7なんだけど、誰か助けて
— natsumi_m31 (@natsumi_m31) 2015, 11月 13
ハマりました。
Node.jsのバージョンなのかArduinoのバージョンなのか何が原因なのかなにもわからない
みんなMac使ってる記事ばっかり
Windows使ってる人だれかー/(^o^)\
— natsumi_m31 (@natsumi_m31) 2015, 11月 13
誰も助けてくれない。
とりあえずNode諦めて照度でチカチカさせて遊んでる pic.twitter.com/ndAFHLMFOu
— natsumi_m31 (@natsumi_m31) 2015, 11月 13
周りが明るすぎてイマイチ変化がわからない。
面白くない…(;´Д`)
その後あきらめて自分であれこれバージョンを下げたりしてみるか、と思ってとりあえずNode.jsのバージョンを5.0.0から4.2.2にインストールし直し。
左側のほうですねー
Node.jsのバージョン下げたらできたー!!
ワーイヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノワーイ
— natsumi_m31 (@natsumi_m31) 2015, 11月 13
すぐ動きました。
ちなみに、自宅のWindows8でも動きました。
これで前に進める…!
ローカルに適当なディレクトリを作って、ここにjsファイルやNode.jsのモジュールを入れます。
Node.jsのコマンドプロンプトでカレントディレクトリをこのディレクトリにします。
そしてnpmコマンドでインストールを実行。
npm i johnny-five
Windowsだとパスが長くてどうのこうのって警告みたいなのが出るんですけど、とりあえず動いたからこのままにしてるよ!
Node.js5.0.0のときはnpmのバージョンが3に上がっていて、ディレクトリがフラットになっているんですけど、これはこういう問題を解決するためでもある…のでしょうかね?
でも5.0.0にしたら動かなくなっちゃうんだよジョニー。
次はArduino側。
これもバージョンの差異が気になるところですが、試したところ最新(2015/11/16現在)の1.6.6でも動きました。
Arduinoのサイトで、「Download」をクリックします。
私の場合はWindowsなので「Windows Installer」をクリック。
そうすると寄付の金額を選ぶような画面が出てくるんですけど、申し訳ないと思いつつ「JUST DOWNLOAD」をクリック。
これでインストールを進めます。
インストールが完了したら、アイコンをクリックしてIDEを開いて…っとその前に、ArduinoをUSBでPCに繋いでおきます。
ドライバのインストール&更新を忘れずに。
それから、ポート名も確認しておきます。
ArduinoのIDEで「ツール」>「マイコンボード」で自分が使うボードをチェックしておくことと、「ツール」>「シリアルポート」でさっきチェックしたポートを選んでおくのを忘れないようにします。
で、Node.jsでなにかするときには、Firmataというプロトコルを使うらしいので、その準備をします。
「ファイル」>「スケッチの例」>「Firmata」>「StandardFirmata」を選択するとサンプルのソースが表示されますので、これをそのままArduinoに書き込みます。
Arduino側のソースは、これだけでオッケー☆⌒d(´∀`)ノ
あとはLEDを1個配線しておいて…今回は13番ピンにしました。
そして、先ほど用意したプロジェクトのディレクトリに、jsファイルを用意します。test.jsとでもしておきましょう。
var five = require('johnny-five'); var board = new five.Board({port:'COM3'}); board.on('ready', function() { console.log("準備できたよ"); var led = new five.Led(13); led.on(); console.log('onだよ'); console.log('5秒待つよ'); setTimeout(function(){ console.log('offにするよ'); led.off(); },5000); });
setTimeout()がダサいとか言わない。
あちこちにあるサンプルではnew five.Board();ってなってることが多いのですが、Windowsの場合はポート名を指定しないといけないみたいです。
new five.Board({port:’COM3′});
こんな感じで。
あとはこれを、nodeコマンドで実行します!
node test.js
最初にreadyになるときとか、いつもLEDが「チカチカチカッ…チカッチカッチカッチカッ」ってなるんだよね。これはなんだろう。変えられるのかな?
少しずつ黒い画面に慣れつつあります…NEOPIXEL RING – 16もポチっちゃったので、届いたらこれもキラキラさせてみたいと思います!