NeoPixelRingをふつうに光らせる
Node.jsとJohnny-five使えばJavaScriptでArduinoを動かせるってことでLEDの制御をするところまではできたので、スイッチサイエンスで見かけて使いたくてたまらなかったLED16連リングを光らせることにしました。
そもそも自分でちゃんと動かせるかどうかわからないので、JavaScriptのことはいったん忘れて普通に光らせてみます。
配線がわからないのでとりあえず商品名で画像検索して参考に。
リングのサイズとピンの位置が微妙すぎて困り、ブレッドボードを2個使う。
画像見ながら繋いでみたけど、めっちゃ不安… pic.twitter.com/GfWkVJpWiT
— natsumi_m31 (@natsumi_m31) 2015, 11月 17
Arduinoの5VをVCCにつないで、GNDをつないで、あとはINピンからデータを送るだけですべてのLEDをまとめて制御できます!
よーく見ると、いっこのチップごとにRGBとそれを制御するちっちゃ~いマイコンが入っているんですね!
これはすごいですね。
最初、普通にLEDを光らせるコードを書き込んでみたけどうまくいきませんでした。
おとなしく「NeoPixel code」で検索。
GitHubあった。
このライブラリを読み込んで、サンプルのコードを書き込んで、ピンの番号とかRGBをちょっと変更して動かすと…
(∩´∀`)∩ワーイ
こっそり配線も直してブレッドボード1個にしました(∀`*ゞ)エヘヘ
とりあえずここまでで、リングを光らせることができました。
どうやってJohnny-Five&FirmataでNeoPixelRingを制御するのか
さて、Adafruit_NeoPixelを読み込んでサンプルのコードを書き込んでしまいましたので、nodeコマンドでどうこうすることができなくなってしまいました。
Firmataのスケッチを書き込んだ状態で動かすにはどうしたらいいんでしょう。
こういうときはとにかくググる!
「NeoPixel Node johnnyfive」とかで検索かけたら、ありました。
node-pixelって。
名前からしてもう絶対これ使えるでしょ。
Examplesを見ても、
five = require("johnny-five");
とかしてるし。
さっそく
npm i node-pixel
すると、node-pixelのモジュール内にも「firmata」と「johnny-five」が入っています!
これだけで使えそう!
そしたらサンプルのコードを書いたtest.jsファイルを作って、
node test.js
・・・うまくいきましたか?
良かったですね。
私はうまくいきませんでしたけどね!
気をつけるポイントは
- 「require(“../lib/pixel.js”)」のこれじゃない感。
「require(“node-pixel”)」とする。 - Windowsだから、もちろん
「new five.Board({port:”COM3″});」。
ポートを指定する。 - 「data: 6,」だったらINにつなぐのは6番ピンにする。
- 16連リングを使うから「length: 4,」は「length: 16,」に変える。
などですが…
それでも動きません!
エラーの内容は「johnny-fiveなんて見つからないよ?」でした。
どうして?johnny-fiveまるごと入っていたじゃない。
( ゚д゚)ハッ!
Windowsなせいで「パスが長すぎる」とかいう理由で警告出てたよね!
つまり、パスが長すぎてjohnny-fiveの当該処理部分のソースに辿りつけていないってことですね。
仕方ないので、johnny-fiveはnode-pixelと同じ階層にインストールし直しました。
まだ長いって警告出るけど、とりあえず動いてるからこのままいくよ!
npm3にできたらいいんだけど、
npm i -g npm
ってやっても2.14.8とかにしかなりませんでした。
やっぱNode.js自体を5.0.0にしないとダメか。
5.0.0だとJohnny-Five動かないんだよな。
(´Д`)ハァ…
ともかくこれで実行した結果、
ワーイヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノワーイ
ついでにstaticのほうも。
( ´Д`)=3 フゥ
あとはセンサーとかで色を変えたりアニメーションさせたいですね。
今は
PC—USB—Arduino—NeoPixel
って繋いでますが、これをポータブルにしたい。
すると
Wi-Fiモジュール—電源—Arduino—NeoPixel
ってことになるんだけど…
実はこれも買っちゃったんだ… pic.twitter.com/p32AhUPlFi
— natsumi_m31 (@natsumi_m31) 2015, 11月 17
というわけで理想としては
電源—ESP-WROOM-02—NeoPixel
なのですが!
果たしてそんなことできるんでしょうか・・・?
ダメなら
ESP-WROOM-02—電源—FLORA(Arduino)—NeoPixel
とかになるのかなぁ…
FLORAにFirmataスケッチ書き込んでおいて、通信だけWROOMで、センサーもつけて…
(´ε`;)ウーン…