LEDでナナイロづくり 2

4.LEDシフト設定
@SHIFT_WS.LED(R)

4000 @SHIFT_WS.LED(R)
4010 IF R<0 THEN GOTO @WSREV
4020 COPY #700,#800,R*6:COPY#806,#700,R*6
4030 LET[0],[R*3],[R*3+1],[R*3+2]:RETURN
4040 @WSREV:R=-R
4050 LET[R*3],[0],[1],[2]
4060 COPY #700,#806,R*6:COPY#800,#700,R*6:R=-R:RETURN

・WS.LEDで点灯しているLED色を右または左に1つシフト(配列移動)します。
・ Rが正数(+)だと右、負数(-)だど左にシフトします。
———————————————————————
変数 R シフト個数
  整数(+プラス)なら右方向へ、R個分のLED色を1つずらす。
  負数(ーマイナス)なら左方向へ1つずらす。
———————————————————————

※変数Rには通常はWS.LEDの数と同じ値を設定します。
 最大シフトは32個までです(33以上はエラー)。
※シフトして空いたLED位置には、シフト前の変数R値の値を代入します。
 つまりR=12のとき、右シフトとなり、12個目LEDの色が、1個目に入ります。
※ COPY命令の作業用メモリとして、PCGパターンのメモリエリアを使います。 このサブルーチンを使用した後にPCGパターンを使うときは、CLP命令で初期化してください(参照:COPY命令CLP命令)。

サンプルプログラム4

20 CLV
30 S=”123456700000″
40 L=50
50 GSB @STR_WS.LED(S,(I,C,L))
60 WS.LED LEN(S)
70 WAIT 60*3
75 R=LEN(S)
80 FOR M=1 TO 24
90 GSB @SHIFT_WS.LED(R)
100 WS.LED LEN(S)
110 WAIT 30
120 NEXT
130 WAIT 60*3
140 R=-R
150 GOTO 80