LEDでナナイロづくり

IchigoJam BASIC 1.4.1のバージョンから、WS.LED 命令が新しく追加されました(2019/12/6確認)。

この新しい命令は、WS2812BなどのフルカラーLEDを光らせるためのものです。
今回は、12個のフルカラーLEDが円形に並んだWS2812 12ビット RGBリングという部品を繋げて、プログラミングします。
他にもフルカラーLEDの個数が違う大小の円形や、テープ状や、スティック状のものなどがあります。
いずれもWS2812というLED部品が載っているものならば使うことができます。

※2019/10/29にテキスト「LEDでナナイロづくり2」も公開しました。こちらの記事も参考にしてください。


目次

P.1 やってみよう

P.2 色設定サブルーチン

P.3 Mission1 七色からひとつ色を選んで光らせる

P.4 Mission2 七色を順番に光らせる

P.5 Mission3 ひとつ置きにひからせる

P.6 Mission4 逆順に光らせる

    応用プログラム

P.7 1.ルーレット

P.8 2.レベルメーター

P.9 3.傾き計


やってみよう!(つなぎ方と光らせ方)

IchigoJam基板とフルカラーLED基板は次の図のようにつなげます。

IchigoJam側フルカラーLED基板側
VCC(3.3V)VCC
GNDGND
LEDIN
繋がないOUT
※LEDの数が多いと、IchigoJamの3.3V電源では不足する場合があります。
その場合は、LED基板のVCCを、IchigoJam基板のCN5の5Vに繋いで、USBから電源をもらうようにしてもOKです。USB電源は5Vですが、LED部品のWS2812B自体は5V品なので問題はありません。

フルカラーLEDを光らせる、新しいIchgoJamの命令書式はつぎのとおりです 。

WS.LED 光らせるLED数 [, 繰り返し数]

今回は12個のフルカラーLEDが付いた基板を使いますので、次のように書きます。

WS.LED 12

これは、「12個のフルカラーLEDを点灯せよ」という意味の命令になります。
しかし、これだけでは光ってくれません。
あらかじめLED位置に相当する配列に、RGB色の明るさ値を設定する必要があります(参照:RGB配列 )。


次の例では、1番目のLEDが緑色に光ります。

[0]=100:[1]=0:[2]=0
OK
WS.LED 12
OK

 □□□□□□□□□□□

配列[0] = 100 (緑色を明るさ値100に設定)
配列[1] = 0  (赤色を明るさ値0に設定 = 光らない)
配列[2] = 0  (青色を明るさ値0に設定 = 光らない)

・フルカラーLEDの色は、緑・赤・青の各色の明るさの割合で決まります
・色の明るさの割合は、配列にGRB(緑赤青)の順に設定します
・明るさ値は、0~255までの値を指定します


2番目のLEDを光らせるときは、配列[3],[4],[5]にGRB値を設定して、WS.LED命令を実行します。

次の例では、2番目のLEDを赤色に光らせます。
明るさの値を200にしているので、緑色より明るく光ります。
1番目のLEDは配列値を変えていないので、そのまま緑色を点灯し続けます。

[3]=0:[4]=200:[5]=0
OK
WS.LED 12
OK

 □□□□□□□□□□


このように、IchigoJamのプログラムでフルカラーLEDを光らせる時は、このように配列への設定とWS.LED命令の実行で行います。

 しかしこれだと、各色の色の組み合わせが、約1600万色(緑256色×赤256色×青256色)もあります。
また、LEDの位置を配列で指定するのも複雑複雑ですので、これでは、プログラミングのも大変です。

そこで、色を7色に限定して、LEDの位置を簡単に指定できるように「LED色設定」サブルーチンを作りました(参考:GOSUB,GSB命令)。