Check! プログラマブルLED の BlinkM で遊んでみよう！ ～ Arduino デビュー編 

こんばんは、[cloudpack][] の @dz_ こと[大平かづみ][]です。

Prologue - はじめに
====
[BlinkM](http://thingm.com/products/blinkm.html "BlinkM | ThingM") というプログラマブルLEDで遊んでみました！

BlinkM は、[スイッチサイエンス](https://www.switch-science.com/catalog/32/ "BlinkM I2C制御RGBカラーLEDモジュール(完成品) - スイッチサイエンス")さんで購入することができます。

ここでは、[BlinkM Quick Start Guide](http://thingm.com/products/blinkm/quick-start-guide.html "BlinkM Quick Start Guide | ThingM") を参考にLEDのカラーや明滅パターンを変える方法を試してみます。

なお、作業環境は Windows 10 ( on MacBookAir ) です。

BlinkM とは
====
BlinkM は、24ビットのフルカラーLEDを搭載していて、プログラムを書き込むことによってカラーや明滅のパターンを変えられるモジュールです。

また、購入直後のままでも電池とつなげば七色を移り変わりながらきれいに光ります。

Let's Try !
====
必要なもの
----

- [BlinkM](https://www.switch-science.com/catalog/32/ "BlinkM I2C制御RGBカラーLEDモジュール(完成品) - スイッチサイエンス")
- [Arduino](https://www.arduino.cc/ ">Arduino - Home")
    - 私は [Arduino UNO](https://store.arduino.cc/product/A000066 "Arduino Store - Arduino UNO Rev3") を使います。
- Arduino とPCをつなぐ接続ケーブル
    - Arduino UNO は、A-BタイプのUSBケーブルを使用します。

また、マシンには以下のデータシートとソフトウェアを用意してください。

- [データシート](http://thingm.com/fileadmin/thingm/downloads/BlinkM_datasheet.pdf)
- [BlinkM Communicator](http://thingm.com/fileadmin/thingm/downloads/BlinkMCommunicator.zip)
- [BlinkM Sequencer for Mac OS X](http://thingm.com/fileadmin/thingm/downloads/BlinkMSequencer-mac.zip) or
[BlinkM Sequencer for Windows](http://thingm.com/fileadmin/thingm/downloads/BlinkMSequencer-win.zip)

Arduino の準備
----
Arduino の標準的なセットアップガイドに従って、 Arduino を扱う準備をしてください。

### Arduino セットアップガイド
- [Windows 向け Arduino セットアップガイド](http://www.arduino.cc/en/Guide/Windows "Arduino - Windows")
- [Mac OS X 向け Arduino セットアップガイド](http://www.arduino.cc/en/Guide/MacOSX "Arduino - Max OS X")

### 大まかな手順
1. Arduino ソフトウェアのダウンロード
2. シリアルドライバーのインストール
3. Arduino ボードをつなぐ
4. Arduino ソフトウェアを起動する

Arduino のセットアップが完了すると、Arduino ソフトウェア環境が起動できて、Arduino のボード上の LED を点灯させることができるようになります。

なお、Windows 10 では特にドライバをインストールせずに認識しました。

以下、参考までに要所要所のキャプチャを貼っておきます。

Aruduino をインストールを起動すると、Java Platform SE binary のファイアフォールのブロックについてダイアログが表示されるので、アクセスを許可します。
![20150929_arudino_001.png](https://qiita-image-store.s3.amazonaws.com/0/3812/143e7ed1-b9a9-8bcd-3066-8f38109b75ca.png)

これがインストールされた Arduino 開発ツールです。
![20150929_arudino_002.png](https://qiita-image-store.s3.amazonaws.com/0/3812/ca3280f9-eaa1-07a3-3106-0eba90810ba7.png)

試しに、Arduino のオンボードのLEDを点滅させるスケッチ（スクリプト）を動かしてみましょう。
![20150929_arudino_007.png](https://qiita-image-store.s3.amazonaws.com/0/3812/47013073-43f0-3ef9-e647-a72362466302.png)

ここで、Arudino 端末をUSBケーブルで接続してみます。デバイスに「Arduino Uno (COM3)」が表示されました！
![20150929_arudino_004.png](https://qiita-image-store.s3.amazonaws.com/0/3812/d1964ebd-eac5-54b0-816d-4c96089344b5.png)

次に、Arduino 開発ツールでボードとポートを設定します。ポートは上記のデバイスに表示されたCOMポートを指定します。（ここでは COM3 ）
![20150929_arudino_005.png](https://qiita-image-store.s3.amazonaws.com/0/3812/f6326669-68da-1817-eaa2-2961d12a6e9f.png)
![20150929_arudino_006.png](https://qiita-image-store.s3.amazonaws.com/0/3812/d80c50b2-433a-ad3e-667e-6998e1730251.png)

それでは、「マイコンボードに書き込む」を実行してみましょう！
![20150929_arudino_009.png](https://qiita-image-store.s3.amazonaws.com/0/3812/590c11e1-c12e-b0c9-4cf6-6ee63575d390.png)

書き込んでいます。
![20150929_arudino_010.png](https://qiita-image-store.s3.amazonaws.com/0/3812/f29b7ef5-56bf-4fae-3ff4-3d63cb079526.png)

Lチカ (LEDチカチカ) できました！
![20150929_arudino_011.png](https://qiita-image-store.s3.amazonaws.com/0/3812/4819c8cc-69b9-e2ed-4887-d5ca5260af6b.png)

さて、これは準備でしたね。

BlinkM のピカピカを変えてみる！
====
BlinkM 接続の準備
----
では、この Arduino 開発ツールに、BlinkM 用のスケッチ（スクリプト）を読み込ませましょう。

`BlinkMCommunicator.zip` を解凍し、 `BlinkMCommunicator.ino` というスケッチを Arduino 開発環境で開きます。「ファイル」から開くか、画像のように「開く」アイコンからできます。（なお、スケッチのファイルは拡張子が `pde` から `ino` に代わってるみたいですね。）
![20150929_arudino_012.png](https://qiita-image-store.s3.amazonaws.com/0/3812/bdc59caf-2c9c-ff5b-f353-87ffb123cd26.png)
![20150929_arudino_013.png](https://qiita-image-store.s3.amazonaws.com/0/3812/e46c4e75-733f-c76d-0395-d2aefb88c9cb.png)

スケッチを読み込むと「BlinkMCommunicator」「BlinkM_funcs.h」というタブが表示されます。この状態で「マイコンボードに書き込み」ます。
![20150929_arudino_014.png](https://qiita-image-store.s3.amazonaws.com/0/3812/595122cd-d134-5e54-7bc7-cc61c944a681.png)

書き込めたら、Arduino 開発ツールを閉じて、 Arduino をケーブルから **外して** ください。接続を外したら、BlinkM を Arduino のピンに接続しましょう。A2 ～ A5 の穴に BlinkM のピンを指します。

|Arduinoアナログ入力|BlinkM出力ピン|
|------------------|-------------|
|A2|PWR -|
|A3|PWR +|
|A4|I2C d|
|A5|I2C c|
![20150929_blinkm_019.png](https://qiita-image-store.s3.amazonaws.com/0/3812/763b39c1-c7b2-8b48-27e0-b47f4add8204.png)
![20150929_blinkm_020.png](https://qiita-image-store.s3.amazonaws.com/0/3812/b52e6017-3808-48b3-0ed0-10fb98a3ff53.png)


さし終えたら、再度ケーブルで接続してみて下さい。白 → 赤 → 緑 → 青 → 消灯 の順でLEDの色が切り替わるのが確認できましたね！

BlinkM シーケンサーで遊ぼう！
----
ここまでできると、ついに BlinkM のシーケンサーで自由に色を変えることができます！

さぁ、 `BlinkMSequencer.exe` を起動しましょう！
![20150929_blinkm_015.png](https://qiita-image-store.s3.amazonaws.com/0/3812/6eb744d5-a8c0-2a4e-beb2-c7fe6905ee9e.png)

「Set connection」で接続します。
![20150929_blinkm_017.png](https://qiita-image-store.s3.amazonaws.com/0/3812/6a575821-6191-f3d0-e24d-8bd8f12af3c7.png)

さて！これで、上のシーケンスに色を載せていくとそれに合わせてLEDが変わりますよー！
![20150929_blinkm_018.png](https://qiita-image-store.s3.amazonaws.com/0/3812/aad3de8d-77e8-11ee-55c0-738cd5add4c4.png)
![20150929_153559618_iOS (Mobile).jpg](https://qiita-image-store.s3.amazonaws.com/0/3812/36ea66a8-27f6-03dc-8b33-1267f845e05a.jpeg)![20150929_153612086_iOS (Mobile).jpg](https://qiita-image-store.s3.amazonaws.com/0/3812/b67aec01-9791-4be9-16af-4b619c82e075.jpeg)


そしてこれを、BlinkM に書き込みます。
![20150929_blinkm_022.png](https://qiita-image-store.s3.amazonaws.com/0/3812/dbebb23c-3787-febe-6d13-c13e1a3ef1ab.png)

書き込んだ後は、 Arduino から外しても書き込んだシーケンスが保持されます。ですので、電池につなぐだけで、同じシーケンスで光ります！
![20150929_blinkm_023.png](https://qiita-image-store.s3.amazonaws.com/0/3812/2777fdef-c30a-d463-90cf-099430bb5e6a.png)



かわいい！(*ﾉωﾉ)


Epilogue - おわりに
====
思ったよりも、すんなりつまづかずにできました！

Arduino は中継に使うだけと聞いていたので、Arduino は別途環境作らなきゃならないのかと思ってましたが、上記の工程で環境も作ることができました。引き続き Arduino で遊べそうです！

電子工作楽しいですなぁ！！

近況
====

最近
----
- [第4回 ICTトラブルシューティングコンテストの熱い戦いを拝見させていただきました！](http://qiita.com/dz_/items/979dc8e45e8bf5b66122 "第4回 ICTトラブルシューティングコンテストの熱い戦いを拝見させていただきました！")
- [Check! cmder ～ Windows に Monokai スタイルのコンソールを導入 (実行ポリシーのトラブルシューティング)](http://qiita.com/dz_/items/68de2b07aab9ef4aab68 "Check! cmder ～ Windows に Monokai スタイルのコンソールを導入 (実行ポリシーのトラブルシューティング)") ← :new: :sparkles:

Bluemix 関連
----
- [Check! Bluemix で Node.js をスピーディーに開発したい！](http://qiita.com/dz_/items/50949f47ad8e09e491a3/ "Check! Bluemix で Node.js をスピーディーに開発したい！")
- [Check! DBaaS ってなんだろう? IBM Cloudant を Bluemix で使ってみる。](http://qiita.com/dz_/items/ee02ec8144784cface95/ "Check! DBaaS ってなんだろう? IBM Cloudant を Bluemix で触ってみる。")
- [Check! Bluemix でユーザー定義の環境変数を利用する (Node.jsによる利用例)](http://qiita.com/dz_/items/ae282228e68bd50cfc42/ "Check! Bluemix でユーザー定義の環境変数を利用する (Node.jsによる利用例)") ← :new: :sparkles:

言語、Webフレームワーク関連
----
### Node.js
- [Check! Node.js Express でウェブ開発 with Visual Studio Code](http://qiita.com/dz_/items/f24b66f9f464b054dd1b/ "Check! Node.js Express でウェブ開発 with Visual Studio Code")
- [Check! Node.js で Azure AD を！ ～ passport-azure-ad の導入とトラブルシューティング](http://qiita.com/dz_/items/df31be6639fbe3b51df7/ "Check! Node.js で Azure AD を！ ～ passport-azure-ad の導入とトラブルシューティング") ← :new: :sparkles:

### PHP
#### Phalcon PHP Framework
- [爆速フレームワーク!! Phalcon PHP Framework](
http://qiita.com/dz_/items/55ae18f7fe3a873bace1 "爆速フレームワーク!! Phalcon PHP Framework")
- [Meet Volt ! Phalcon 謹製テンプレートエンジン Volt - from 第71回 PHP勉強会](http://qiita.com/dz_/items/974a90b32ba6a6e38182 "Meet Volt ! Phalcon 謹製テンプレートエンジン Volt - from 第71回 PHP勉強会")
- [Meet Phalcon! - Phalcon PHPフレームワークを Nginx on Amazon EC2 にインストール！](http://qiita.com/dz_/items/e70d61487224b854b971 "Meet Phalcon! - Phalcon PHPフレームワークを Nginx on Amazon EC2 にインストール！")

クラウド・インフラ関連
----
### Azure
- [Check! chocolatey で Azure に Windows 作業環境を手早くつくる！](http://qiita.com/dz_/items/6630bca65f312284e70f "Check! chocolatey で Azure に Windows 作業環境を手早くつくる！")
- [Check! Azure オートメーション ランブックで OMS Search API を利用する (和訳)](http://qiita.com/dz_/items/7de3c282adef71aae7c6/ "Check! Azure オートメーション ランブックで OMS Search API を利用する (和訳)")


技術ブログ寄稿
----

[cloudpack技術ブログ][cloudpack-blog]でも記事を書いています。AWS 系はこちらへ！

- <a href="http://blog.cloudpack.jp/author/oohira/" title="大平 かづみ の記事一覧 | cloudpack技術情報サイト"　target="_blank" rel="nofollow">大平 かづみ の記事一覧</a>

[cloudpack]:https://cloudpack.jp/ "cloudpack（クラウドパック） 400社を超える導入実績! EC2などAWSクラウドの導入設計、構築、運用保守サービス"
[cloudpack-blog]:http://blog.cloudpack.jp/ "cloudpack技術情報サイト"
[大平かづみ]:http://blog.cloudpack.jp/author/oohira/ "大平かづみの記事一覧"