はじめに
こちらは、Seeed UG Advent Calendar 2022 の 23日目の記事です。
具体的な内容は、以下の動画の通りで、少し補足すると、micro:bit の傾きを LEDテープの色の色相に対応させるという内容です。実装としては、micro:bit の x方向の傾きの値を、LEDテープの色に対応させるようなことを行っています。
利用した Seeed製品
この中で利用している Seeed製品は、以下となります。
●micro:bit用GroveシールドV2.0 - Seeed Studio
●Grove RGB LED テープ 防水 (WS2813 - 30 LED/m - 1m) - Seeed Studio
自分は、上記の製品を個別に買った形ではなく、以下のキットになっているものを買いました。
●micro:bit Grove 入門キット - Seeedウィキ(日本語版)
プログラム
MakeCode で実装した内容は、以下のとおりです。
ここから、少し実装した内容の補足を書きます。
拡張機能: pxt-neopixel
上記のプログラムでは、LEDテープを扱う部分で、以下の拡張機能を用いています。
●neopixel 0.7.5 (microsoft/pxt-neopixel)
今回使っている「micro:bit用Groveシールド・LED テープ」と、この拡張機能の組み合わせは、簡単に LEDテープを扱える組み合わせなので、個人的にすごくオススメです。
実装について
LEDテープの接続
LEDテープと Groveシールドは、Groveコネクタでの接続です。
Groveシールドに、Grove接続をするためのコネクタは複数ありますが、P0 が含まれるコネクタを使っています。
「最初だけ」の部分
「最初だけ」のブロック内の実装について、少し補足します。
4つのブロックのうち最初の 2つは、拡張機能「pxt-neopixel」のブロックを使っています。
自分が今回使っている LEDテープの LED の数 30個を指定して、その中の 10個だけを使うということをやるための変数も指定しています。
その後の2つは、この後に使うフラグ的な変数の設定と、視覚的に micro:bit のプログラムの処理が開始されたことが分かるようにする、micro:bit本体上の LED を光らせる処理です。
ボタンを押した時の処理
今回、micro:bit上のボタンを押した時の処理を、以下のように実装しました。
- Aボタンを押す: フラグ的な変数を有効化する
- Bボタンを押す: LEDテープ全てを消灯、フラグ的な変数をリセット
- A・Bボタンを同時押し: 全ての LED をレインボーパターンで点灯
上記のフラグ的な変数を有効化した場合の処理は、この後に補足する「ずっと」の中の処理に関わってきます。
「ずっと」の部分
上で書いていた「フラグ的な変数」が有効化された場合、30個の LED のうちの 10個を HSL を使った色指定で点灯させるようにしています。
また、HSL の中の色相の値は、micro:bit の x方向の傾きによって動的に変化するようにしました。その際、傾きの値がとる範囲と色相の値の範囲が異なるため、この部分は値をマップする処理を入れています。
余談
昨年の Seeed UG のアドベントカレンダー用の記事でも、「micro:bit と Grove」という方向の内容で記事を書いていたというのが、検索して分かりました。
●【Seeed UG 2021】 micro:bit と Groveモジュールの話(2021年12月) - Qiita
https://qiita.com/youtoy/items/25f9167f56343492b457