2018-10-10
いつものテープ状フルカラーLED WS2812Bを30コ、330円分を使って、大きなフルカラー7セグLEDを作って、役に立ちそうにない時計プログラムとして動かしてみます。


カットして配線するときれいですが、横着して折り曲げ加工。


ちょうどいい空き箱発見、和紙をカッターでハコ形に切り出します。

この当たりでひとまずランダムに30コ全部を使って光らせるプログラム作成。(解説

10 POKE#700,240,181,68,24,90,32,12,73,114,182,128,37,35,120,1,52,255,34,74,96,3,39,10,38,43,66,1,208,10,39,3,38,1,63,253,209,0,34,74,96,1,62,253,209,109,8,239,209,1,56,234,209,98,182,240,189,0,0,1,80 20 C=RND(1000):GSB100:WAIT60:CONT 100 FORI=0TO29:POKE#800+I*3,C/10%10*3,C/100*3,C%10*3:NEXT 110 U=USR(#700,#800):RTN

7セグLEDの扱い方は、とても良い解説記事がこちらにあります。
IchigoJamの7セグLEDタイマーで16進数を学ぼう! – しずかなかずし

折り曲げたテープ状フルカラーLED、上下が5つ、その他が4つでセグメントを表しています。
7セグLEDの表示パターンをそのまま使うことにしたので、対応表を配列にいれて、変換するプログラムがこちら。

10 POKE#700,240,181,68,24,90,32,12,73,114,182,128,37,35,120,1,52,255,34,74,96,3,39,10,38,43,66,1,208,10,39,3,38,1,63,253,209,0,34,74,96,1,62,253,209,109,8,239,209,1,56,234,209,98,182,240,189,0,0,1,80 20 FORK=0TO9:C=RND(1000):N=K:GSB100:WAIT60:NEXT:CONT 100 LET[0],#7B,#30,#67,#76,#3C,#5E,#5F,#78,#7F,#7C:N=[N] 110 LET[0],400,504,426,422,409,413,517 115 FORI=10TO44:[I]=0:NEXT 120 FORI=0TO7:IF N>>I&1 M=[I]:FORJ=0TOM/100-1:POKE#814+(J+M%100)*3,C/10%10*3,C/100*3,C%10*3:NEXT 130 NEXT:U=USR(#700,#814):RTN

10行は上記と一緒、WS2812Bドライバ、マシン語プログラム。
100行で7セグのパターンを設定。(7セグLEDの解説通り)
110行ではそのセグメントが30コのフルカラーLEDの何個に対応するかと、その位置を設定しています。
VRAMやPCG領域も空いているのでそちらを使ってもOKですが、今回は配列領域を使っています。


ひとまず電池駆動で詰め込んでみます。


立てて置くイメージ、なかなかいい感じ!


こんな風に、0から9までを1秒おきにランダムな色で表示します。

秒針1桁だけ表示する時計のできあがり!
オシャレ温湿度計や、オシャレサイコロなど、いろんなイルミネーションに応用ください。

Tweet
クリエイティブ・コモンズ・ライセンス
本ブログの記事や写真は「Creative Commons — CC BY 4.0」の下に提供します。記事内で紹介するプログラムや作品は、それぞれに記載されたライセンスを参照ください。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / 「一日一創」画像 / RSS