micro:bitでmicro:pixel EDGE : フルカラーLEDが10個付いたモジュールを使ってみる

こんにちは。
NaKaTaFuです。
microbit Advent Calendar 2017 の５日目です。

やはり、この季節は光りものですね！というわけで、

- micro:bitでのNeoPixel使用時の注意点
- micro:bitに直付けできるmicro:pixel EDGEという製品の紹介
- サンプルプログラムの作成
- おまけ：micro:bitのエッジコネクタ構造

について書いていきたいと思います。

# micro:bitでのNeoPixel使用時の注意点
micro:bitで使えるNeoPixelモジュールは色々販売されています。
結線(P0, 3V, GNDの3つを使用)さえ間違えなければ、汎用のNeoPixelも使用可能です。

**ただし、3個以上光らせる場合は消費電流に十分注意してください。WS2812BはRGBすべて最大輝度状態で光らせると50mA消費します。USB経由で電源を供給している場合、2個以上を最大輝度で光らせとmicro:bit本体を壊す可能性があります。
分からない場合は一度2個以内で実験してから、http://tech.microbit.org/hardware/powersupply/ を良く理解してから輝度を調整しながら数を増やしてください(Brightnessへの設定値は 現時点では機能していないようです。)**
**電源電圧についても注意が必要です。低いとNeoPixelがうまく光らず、赤くしか光らなかったり、黄色っぽくなったりします。高すぎるとmicro:bitを破壊してしまいます**

このような問題を避けるためか、以下のモジュールにはレギュレータが搭載されており、あまり深く考えなくても適切な電圧が供給されるようになっています。ただし、電流については、搭載されたレギュレータ、使用する電源に応じて調整が必要な筈です。個々の製品の注意書きに注意して使用する必要があります。

- [micro:bit用Servo:LITE](https://www.switch-science.com/catalog/3414/)
- [ZIP Halo - micro:bit用円型フルカラーLED](https://www.switch-science.com/catalog/3484/)

これからクリスマスまでに何か光物作りたいのであれば、これらがお勧めですね。

# micro:pixel EDGEについて
さて、私が今回使ったのは、micro:pixel EDGEという製品になります。
![](http://drive.google.com/uc?export=view&id=1oYp34B8USo4UzK5xZ8WT90RG3JzKiInpaQ)

micro:pixel EDGEは写真の通り、写真の通りmicro:bitのエッジコネクタに直接接続できる10個のNeoPixel LED(フルカラーLED)が付いた拡張ボードです。
国内での取り扱い業者は見当たりませんが、海外の通販サイトから輸入可能です。

- Pimoroni(£6.50、約982円) https://shop.pimoroni.com/products/micro-pixel-edge-1x10-ws2812b-board-for-micro-bit

ちなみに、[ここ](https://www.proto-pic.co.uk/micropixel-edge-for-microbit.html)が製造元(PROTO-PIC)のサイトですが、"No stock, discontinued"とあります...あれ？在庫切れたらもう買えないの？

# サンプルプログラム
日本語の情報は少ないようです。簡単な英語なので[こちら](https://makecode.microbit.org/pkg/microsoft/pxt-neopixel)を参考にする良いと思います。

### 1. micro:bitのJavaScript ブロックエディタを開いてください。
https://makecode.microbit.org/
もし、これまでにmicro:bitを使ったことがあれば、以前作成したプログラムが表示されるかもしれません。その場合は、画面左上の「プロジェクト」をクリックして新しいプロジェクトをクリックして下さい。
<img width="300" alt="" src="http://drive.google.com/uc?export=view&id=1UP28vGFAazbRHKtDdfM4E4HbjsjU9xJa">

### 2. neopixelパッケージを取り込む
続いて、画面中央のモジュール選択欄の「高度なブロック」をクリックして展開します。
一番下に「パッケージを追加する」メニューが現れますので、クリックします。
<img width="250" alt="" src="http://drive.google.com/uc?export=view&id=1kN6oZlNTdA3bnO31JDbmLGt-72WNZ0G9">

パッケージ一覧に「neopixel」が現れますので、これをクリックします。
<img alt="width=500" src="http://drive.google.com/uc?export=view&id=1QCkRR5vcgcf58dVmFY6OdGjOF0D_KCXO">

### 3. ブロックを配置してプログラムを作成する
次のモジュール使えるようになります。
<img width="400" alt="" src="http://drive.google.com/uc?export=view&id=193j869t5BXCzoT7PwwuqXalwcWktvQOM">
<img width="400" alt="" src="http://drive.google.com/uc?export=view&id=1mAVC_TLJRodL_wnP_I6w3wCSKAuo5hZ4">


作ってみたサンプルです。傾けると色が動きます。
https://makecode.microbit.org/_Vqp96c2dYUb2
<img width="600" alt="" src="http://drive.google.com/uc?export=view&id=1gjRNTF2B6UGG7c3HFzX_Pa7wUM6XLBTI">


# おまけ：micro:bitのエッジコネクタ構造
以下の２枚の写真を見て下さい。両方の写真で、micro:pixel EDGEのボードの刺さっている向きが違っていることが分かるでしょうか？
<img width="600" alt="" src="http://drive.google.com/uc?export=view&id=12Wv9WPap7yOlo6ctHMt7uQS26M29muXxxg">
<img width="600" alt="" src="http://drive.google.com/uc?export=view&id=1z2B7bEIOzZk1Cvk6B63v2gsvb3va7qVwFw">
実は、このmicro:pixel EDGEは上下ひっくり返して接続しても使えるのです。

micro:bitのコネクタを観察したところ、逆さまに接続しても故障しないように工夫されており、そのおかげでコネクタ側で工夫をするとこの製品のように逆さまに刺しても動作する製品が作れるということが分かりました。

- micro:bitのコネクタの表側の写真。<BR><img width="600" alt="" src="http://drive.google.com/uc?export=view&id=151Zm_FRCBjpPsXRFFj2qe263LNoPOKDrGA"><BR>
[BBC micro:bit Pins](http://microbit.org/ja/guide/hardware/pins/)にあるように、５個の大きな穴のついたピンと２０個の小さなピンで構成されています。（ちなみに、大きなピンの両脇の小さなピンは、間の大きなピンと同じ信号となっており、ワニ口クリップなどを使った場合に多少小さなピンに当たっても誤動作しないようになっています。）<BR><BR>
- 裏の写真。<BR><img width="600" alt="" src="http://drive.google.com/uc?export=view&id=1tUPrqCVIGBR1A-VJYczOHiW7g_FXWjWMIQ"><BR><BR>
- 実は、裏のピンはすべてどこにもつながっていません。表面からのスルーホールとなっている大きなピンの根元の部分も裏側はつながっていません。
- つまり、エッジコネクタは表側しか使われていません。このことから、コネクタ側で裏面に表面と同様に配線しておくことで、どちら向きに刺しても使えるような拡張ボードが作れるわけです。
- 手持ちの製品を確認したところ、発見できたのはこれだけですが、今後micro:bitの拡張ボードを作成する時に工夫しておくと、micro:bitをどちら向きに刺しても使える製品が作れることが分かりました。面白い工夫をしているものですね。