« Ichigojam マシン語デバッグ術 | トップページ | 九段下の合同庁舎でゴハン »

Ichigojam の WS.LED コマンド

 夏休みの自由研究的な電子工作

 以前にPCN秋葉原でLEDを虹色に光らせる研究がなされていたので、教えを乞うことにしました。

 9月といえばそろそろ十五夜お月様のじきかな、ということでウサギさんとお団子を光らせることにしてみました。え、月は光らないの?というツッコみはなしでお願いします。例によってアイロンビーズでウサギさんを作ってみると以下の写真のようになりました。



 光らせる場所はウサギさんの目とおなかのあたりとお団子の中心に1球ずつフルカラーLEDを裏から張り付ける作戦です。WS2812Bのミニ基板モジュールと PL9823 という砲弾型の5mmのLEDを連結させてみました。これらを連結して光るかどうかはまだ誰も確かめたことがなさそうだったのでやってみました。

 配線を隠しながら LED をアイロンビーズの裏側に接着するために、グルーガンを使いました。IYN はこの透明な樹脂を熱で溶かして LED を張り付けるというのがそんなに有効なのか知らなかったので、ちょっと感激してしまいました。ええっ、こんな簡単に、LED が思うように固定できてしまうなんて!



 適当に配列に数値を入れて WS.LED 3 とコマンドを実行するとうまいこと光ってくれました。ただし、配列の[0]~[5]はWS2812Bの2球に対応しているのでカラーデータの並びはGRBGRB、配列の[6]~[8]はPL9823(ウサギさんの眼球)なのでカラーデータの並びはRGBとなります。127くらいで光量としてはサチっているみたいなのでこのくらいの出力値にしておくのが良いでしょう。なぜなら、消費電力のわりに見た目の輝度が変わりませんし、Ichigojamからドライブさせる電力としても抑え気味にした方が賢いからです。





 さて、WS.LEDコマンドが思ったように動かせることが分かったら虹色出力です。虹色というと起点となる7色をRGBで表現したり、それを連続的に変化させるようなプログラムを書こうと思うとちょっとめんどくさいな、と感じました。それで PCN秋葉原 のお店の人に相談したところ以下のような数式1行で表現できると教えていただいたのです。

[ I % 3 ] = ABS( I % 2 * 100 - H )



   この式の説明をします。色相環では360度で一周する虹色を6つのステージに分割すると、I = 0 ~ 5 となります。I % 3 は配列の要素数で、I=0, 1, 2, ... とステージが進むたびに [0] [1] [2] [0] [1] [2] と配列の添え字が変化します。つまり、G R B G R B の順番に出力するカラー情報が変化するということです。ABS の方はもう少し複雑で、ステージが I=0, 1, 2, ... と進むとABS( ... ) の数式の評価結果は

I=0: H (=Gが0→100と変化)

I=1: 100-H (=Rが100→0)

I=2: H (=Bが0→100)

I=3: 100-H (Gが100→H)

I=4: H (Rが0→100)

I=5: 100-H (Bが100→0)


というようになり、各ステージの中でHを0~100とカウントアップさせることで色相環の六角形(輝度はまちまちだけど)の中をたどることができるという優れモノなのです。上記をきちんと理解したうえで Ichigojam BASIC でプログラムを書くと以下のようになりました。

 プログラムでやっていることは、ウサギさんのおなかのあたりを虹色に変化させていることに加えてウサギさんの目は赤固定でお団子はぼんやり点滅しています。



 お彼岸が近付くにつれ、寝苦しい夜も少なくなってきました。Ichigojam を使った電子工作もゲーム開発もこれからが身に入るころですね!

« Ichigojam マシン語デバッグ術 | トップページ | 九段下の合同庁舎でゴハン »

電子回路工作」カテゴリの記事

コメント

この記事へのコメントは終了しました。

2022年3月
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    
無料ブログはココログ