★この記事は「IchigoJam Advent Calendar 2020」にエントリーしています。
フルカラーLED・WS2812Bの5×5=25個マトリックスを入手したので、先日やったmicro:bit v2と同じように連打ゲームを作ってみました。
動画はこちら。
裏面に単芯線(0.65mm)をはんだ付けして、IchigoJamのソケットにつなぎます。
WS2812B | IchigoJam | |
---|---|---|
VCC | → | VCC |
GND | → | GND |
IN | → | LED |
プログラム
10 @ARUN:'*Renda25 20 CLV:VIDEO 0:W=30 30 WS.LED 25 40 LET [80],#3F,#7E,#1F,#00,#B7,#76,#BF,#56,#9F,#1C 50 LET [90],#BD,#5E,#BD,#7E,#1F,#1E,#BF,#7E,#BF,#5E 60 FOR N=3 TO 1 STEP -1 70 GSB @PRTN 80 BEEP 90 WAIT 58 100 NEXT 110 [0]=0 120 COPY #801,#800,149 130 WS.LED 25 140 FOR L=0 TO 24 150 [L*3+L/10]=W 160 NEXT 170 WS.LED 25 180 CLT 190 FOR L=0 TO 24 200 IF !BTN() CONT 210 IF BTN() CONT 220 BEEP 230 [L*3+L/10]=0 240 WS.LED 25 250 NEXT 260 BEEP 10,30 270 WAIT 30 280 T=TICK() 290 N=(T/60)%10 300 [12]=W 310 GSB @PRTN 320 WAIT 60 330 N=T%60/6 340 [12]=0 350 GSB @PRTN 360 IF BTN() RUN ELSE CONT 370 @PRTN 380 D=[80+N*2]:E=[81+N*2] 390 FOR B=0 TO 7 400 [30+B*3]=D%2*W 410 [54+B*3]=E%2*W 420 D=D/2:E=E/2 430 NEXT 440 WS.LED 25 450 RTN
フルカラーLEDが25個あるので、配列変数[0]~[74]はその点灯用。せっかくフルカラーなので、25個のドットもRGBで表示してみました(140~160行)。
配列変数[80]~[99]は、40~50行で数字フォントデータ(5行3列=15ビット→2バイト、「0」~「9」で10文字分)を設定しています。
数字表示は表示サブルーチン(370~450行)で、フォントデータ配列を1ビットずつ読み出しながら表示用配列に値を設定して、WS.LEDコマンドで表示しています。小数点は別に処理しています(300行、340行)