ナナイロイルミネーション for micro:bit

IchigoJam教材として定番の「ナナイロイルミネーション」ですが、micro:bit版(BASIC命令互換版)を作ってみました。

micro:bitのNeopixelには、既に位置と色と明るさを指定して光らせる命令(ブロック)があるのですが、これを使わずにIchigoJamBAISCと同じように、変数でプログラムします。

両方のプログラムを並べてみます。

変数の対応は下記の通りです

IchigoJamMicro:bit説明
SStrings文字列による8色分
WW待ち時間 IJは1/60s単位、mbは1m単位
LL明るさ 0〜255
JJ+は右移動、-は左移動  IJは+-LED数の指定
mbは、+1か-1のみ
CC色  0〜6 (内部サブルーチンおよび関数にて使用)
[n][n+1][n+2]R,G,BRGB値 IJは配列に位置情報とともに保管
mbは、1LED分のRGB値
stripmicro:bitのみで必要。Neopixelを定義する構造体変数。「最初だけ」ブロックで実行しておく。
strip = neopixel.create(DigitalPin.P0, 8, NeoPixelMode.GRB)

micro:bitプログラムには、「最初だけ」ブロックにNeopixelで使用するstrip変数を定義しておく必要があります。
IchigoJamプログラムと対比しやすいように、IchigoJamの初期化は、micro:biyプログラムの「ずっと」ブロック内で定義しています。

IchigoJam30行目から60行目は、micro:bitの「ずっと」ブロックの最初に並べています。

IchigoJam80行目のサブルーチン「@SLED」は、micro:bitの関数ブロックに相当します。
「StringsからStripを設定する」

IchigoJam 90行目の「WS.LED8」は、micro:bitのneopixelブロックに相当します。
「設定した色で点灯する」

IchigoJam100行目から130行目は無限ループ構造になっています。micro:bitにはGOTOに相当する命令はないため、「もし 真 なら繰り返し」ブロックを使用して、同様の動きを作ります。

IcihgJam100行目の「WAIT W」は、micro:bitの一時停止ブロックに相当します。
「一時停止する(ミリ秒) W」

IchigoJam110行目のサブルーチン「@JLED」は、micro:bitのneopixelブロックに相当します。
「LED色をJ個分ずらす(ひと回り)」
「設定した色で点灯する」

IchigoJam120行目の「IF BTN() CONT」は、ボタンが押されたら色の動きを停止する動きなのですが、micro:bit側には書き忘れました。


さて