micro:bitとNeoPixelと100均灯油ポンプでライトステッキをつくる

#概要
教育向けマイコンボードmicro:bitとテープLED NeoPixelを、100均にある灯油ポンプを使ってライト・ステッキにしてみました。作り方は思ったより簡単で、見栄えが良く子ども・大人ともにウケがいいものができます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/4092/77ae3d65-2a6f-beaf-5dae-ed0460374d41.png)
#材料
+ [ ] 灯油ポンプ1個（ダイソーなど100均ストアで手に入ります）
![image.png](https://qiita-image-store.s3.amazonaws.com/0/4092/2bd6bd7e-5539-1f3c-55b8-355a7d27dff6.png)

+ [ ] micro:bit 1個
+ [ ] micro:bitアクリルケース[^1]1個(セロハンテープでmicro:bitを固定するのでケースがあると後から剥がしやすい）
+ [ ] ワニ口クリップケーブル[^2]3本（赤・黒・黄 or 白など）
+ [ ] 電池ケース1個（スイッチ付きのもの[^3]が使いやすい）
+ [ ] セロハンテープ適量
+ [ ] NeoPixel(WS2812B) LEDテープ

NeoPixel(WS2812B) LEDテープ（以下LEDテープ）は5mのものがコストパフォーマンスに優れています。[Amazonで購入](https://amzn.to/2QSQ8eC)しました。ライトステッキ1個作るには余らせてしまいますが、たくさんの子のライトステッキを作ったり、他のイルミネーション用電子工作に使ったりもできます。
[ALITOVE LEDテープ WS2812B アドレス指定可能 LEDテープライト 5m300LED 5050RGB SMD ピクセル ドリームカラー 非防水 ホワイトPCB ＤＣ５Ⅴ](https://amzn.to/2QSQ8eC)
![LEDテープ WS2812B](https://images-na.ssl-images-amazon.com/images/I/61nYlivVmuL._SL1000_.jpg)

[^1]: 共立電子 micro:bit用アクリルケース KP-MBCASE http://eleshop.jp/shop/g/g402577/
[^2]: 共立電子 線付きミノムシクリップ(小)5本入り WTN-23-1236 http://eleshop.jp/shop/g/g67M313/
[^3]: 共立電子 micro:bit用スイッチ付電池ケース 単3×2本 PHコネクタ2P http://eleshop.jp/shop/g/gHAE311/

#下準備
子どもと一緒に工作することを考えて、下準備をしておきます。ここから子どもと一緒に工作を始めても構いません。

### 灯油ポンプ
+ 灯油ポンプの先がとがっているので危ないです。ニッパーなどで切って平らにしておきます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/4092/503b5c5d-5e4d-9933-7c0f-6222d1567a5d.png)

+ 灯油ポンプの柔らかいホースの部分は不要なのでカッターなどで切り取ります。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/4092/ebe5b6f9-8fbb-5d79-c94c-0adcafb22017.png)

+ ポンプの弁を2つ取り去ります。ラジオペンチなどを使うと取りやすいです。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/4092/8ff4286c-f5eb-158d-c28b-cbeb680b3f04.png)

### LEDテープ
+ LEDテープを25灯分、ハサミなどで切ります。電極部分を損なわないように注意してまっすぐ切りましょう。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/4092/6a4e18d9-d71b-e940-00bb-5ff14dce7a60.png)

+ LEDが25灯分切り出されると、灯油ポンプのポールの部分から少しはみ出る長さになります。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/4092/b0e9a1de-8b62-245f-8c1f-a1af91486023.png)

+ ここまで準備できたら準備完了です。灯油ポンプは元の状態に戻して子どもたちと工作の実作業を始めるといいかもしれません。
 
# 工作の実作業

### 灯油ポンプにLEDテープを入れる
+ 25灯分のLEDテープを灯油ポンプに収めていきます。柔らかいホースを切り取った穴にLEDテープを通します。その際、LEDテープにある矢印「→」マークが灯油ポンプの中に向かっていくように通してください。LEDテープの入れる向きが反対になるとLEDが光りません。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/4092/3c5a8bc9-dc0b-93bb-23b9-812b82bc4366.png)

### ワニ口クリップをつなぐ
ワニ口クリップケーブルをつなぎます。

| ワニ口 | LEDテープ電極 | micro:bit |
|:-:|:-:|:-:|
| 黒  | GND  | GND  |
| 黄  | DI  |  P0 |
| 赤  | 5V  | 3V  |
5Vの給電が必要なところをmicro:bitの3.3V（表記は3V）を使いますが、ちゃんと光ります:smile:
![image.png](https://qiita-image-store.s3.amazonaws.com/0/4092/d8780590-3430-7205-71ff-76f952cddd01.png)
micro:bitにもワニ口クリップケーブルつなぎます。時間があればこの時に[MakeCodeでプログラム動作確認を行う](https://qiita.com/dietposter/items/29c5d6f2fd79b84d70d3#%E5%8B%95%E4%BD%9C%E7%A2%BA%E8%AA%8D%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%AE%E5%AE%9F%E8%A1%8C)のも確実な進め方です。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/4092/8e821c3d-74a9-57b2-3f73-972b0cfa24ad.png)
ワニ口クリップでLEDテープの電極を挟んだ部位をセロハンテープで固定します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/4092/fc031b6b-74cf-3eb4-d11f-7e244235fc7f.png)

### 灯油ポンプを組み立てる
ここでバラバラになっていた灯油ポンプを組み立てます。

+ ワニ口クリップでLEDテープの電極を挟んだ部位をグッと押し込んで固定します。その際にポールに入る側のLEDテープを引っ張り上げるようにして灯油ポンプ内でたわんでしまわないようにします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/4092/3b470275-8d94-23bf-9ea4-7c3a211e1aad.png)

+ 赤いポンプ部分とポールを取り付けていきます。ポールはしっかり奥まで差し込んで取り付けてください。完成後プログラムで「ゆさぶられたとき」ブロックを使った際に、奥まで差し込んでおかないと、激しく揺さぶった際にポール部分がすっぽ抜けていくキケンがあります:fearful:
![image.png](https://qiita-image-store.s3.amazonaws.com/0/4092/5e5db9c9-8c5d-7eda-363c-2ea2b2edbc8d.png)

+ 灯油ポンプが組み上がったら、ワニ口クリップケーブルをぐるぐる巻きにして灯油ポンプに巻き付け、micro:bitをポール側に固定できるようにします（この処理は各自いろいろ工夫するといいでしょう。赤いポンプ部分にワニ口クリップケーブルをうまく収める方法もあると思います。ここでは、子ども向けに少し雑なやり方にしています）。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/4092/5644b15d-e2f2-68f9-f2c1-97d51e790317.png)

+ micro:bitと電池ボックスをセロハンテープで固定します。灯油ポンプのポールにmicro:bitと電池ボックスをくっつけてセロハンテープ（15㎝程度を2枚）を巻き付けて固定します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/4092/8a7bf7ee-ad4b-9b05-13fb-ab8d918f4bd5.png)
これでハードウェアは完成です！！

### プログラムを作成する
#### 動作確認プログラムの実行
簡単な動作確認を行うプログラムを共有しています。以下のリンクをクリックして動作確認してみてください。

+ 動作確認用のサンプルプログラム 「[ライトステッキ動作確認](https://makecode.microbit.org/_Ao1cX1aokE8C)」

サンプルプログラムは以下の様になっています。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/4092/b2742ef4-02d9-cd3f-b71e-ff6a4b23e0cd.png)
JavaScriptでは以下の様になっています。

```JavaScript:ライトステッキ動作確認
let strip: neopixel.Strip = null
basic.showIcon(IconNames.Yes)
strip = neopixel.create(DigitalPin.P0, 25, NeoPixelMode.RGB)

input.onButtonPressed(Button.A, function () {
    basic.showIcon(IconNames.Heart)
    strip.showRainbow(1, 360)
})

input.onButtonPressed(Button.B, function () {
    basic.showIcon(IconNames.Snake)
    strip.showColor(neopixel.colors(NeoPixelColors.Red))
})

input.onGesture(Gesture.ScreenDown, function () {
    basic.clearScreen()
    strip.showColor(neopixel.colors(NeoPixelColors.Black))
})
```
#### 機能拡張「NeoPixel」
LEDテープを光らせるプログラムを作成する際には、NeoPixelの機能拡張を追加しておく必要があります。

+ MakeCode JavaScriptブロックエディタの右上にある歯車ボタンをクリックして機能拡張を選びます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/4092/d0c7ce70-7d26-08e1-01a6-b8edf7e24f6a.png)

+ `neopixel`の選択項目をクリックします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/4092/ae2602b9-aa0b-8ca4-f0f4-f0552deff37e.png)

+ 以下の様に`Neopixel`のブロックが追加されます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/4092/be365dfa-25e5-7a09-1982-30186ef0ff8e.png)

#まとめ Happy programming!:smile:
Neopixelのプログラムは、stripインスタンス変数のプロパティやメソッドをいじるやり方です。こう書くと難しそうですが、実際にブロックでプログラミングすると楽しく簡単に色んなことを試すことができます！
ぜひカラフルで楽しいライトステッキにしてください！！:smile::smile::smile: