[No.8]繰り返しの技を使いこなそう!〜ライトを順番に点灯

小さなものづくりコンピューター「SPACEBLOCK(スペースブロック)」でさまざまな機能を作るために、プログラミングの技を磨いていきましょう。今回は、LEDパネルを使って、 プログラミングの基本技である「繰り返し」を使いますよ!
必要なもの&準備
- SPACEBLOCK通常パッケージ[SPACEBLOCK本体、USBケーブル、(電池ボックス)]
- 8×8 RGB LEDマトリックスパネル(LEDパネル)
- プログラミングをするパソコン

SPACEBLOCKにLEDパネルを接続する

ジャンパーワイヤを接続する場合、細かい部分は以下の図を参考にしてください。

要注意マークを表示する

「!」マークが点灯し、1秒経つと消えるプログラムができました。もっと目立たせたいので、このマークを点滅させてみましょう。
マークを点滅させるには?
点滅というのは、「点灯→消灯→点灯→消灯→点灯→消灯→点灯→消灯→点灯→消灯→点灯→消灯→点灯→消灯→」……という状態です。「点灯→消灯→」というパターンを何度も繰り返していますね。
同じパターンの命令を繰り返すのに使うのが、「繰り返し」カテゴリーの[繰り返す]ブロックです。[繰り返す]ブロックは、間にはさんだ命令ブロックをずっと繰り返して実行します。

[プログラム開始]に[繰り返す]ブロックをつなぎ、その内側に次の図の通りプログラムを作成しましょう。

動画で見てみましょう。
LEDを1個ずつ順番に点灯させるには?
次に、LEDパネルのライトを1個ずつ順番に点灯させてみましょう。LEDパネルには8×8の合計64個のLEDが並んでいて、これら1個ずつを個別に指定して点灯したり消灯したりすることができます。
ライトの位置を指定して点灯するには、「LED」カテゴリーの[8×8 RGB LED《A10》のx《1》y《1》を《色》に点灯]というブロックを使います。位置は、x座標、y座標で指定します。

横方向 8個のLEDを順番に点灯させる

このように、命令ブロックをどんどんつないでも良いのですが、数が増えるとプログラムを作るのがとても大変です。
プログラムを点検すると、同じブロックが繰り返しつながっていて、[8×8 RGB LED《A10》のx《1》y《1》を《色》に点灯]ブロックのx座標の値だけが違います。x座標の値は、順番に1から8まで1ずつ増えていますね。このように、ある値が規則的に変化しながら繰り返しをしている場合、「変数(へんすう)」を使うと効率よくプログラムを作ることができます。
「変数」と繰り返しで効率アップ!
「変数(へんすう)」は、値を入れておくことができる入れ物で、自分で好きな名前をつけられます。変数に入れておく値は、プログラムの途中で入れ替えることができます。
まず、次の図の手順通り新しい変数を作りましょう、名前は「X」とします。

次に、今作った変数「X」に、最初の値として「1」を入れます。次の図の通り、[プログラム開始]ブロックに[数字《X》に《 》をセット]をつなぎ、1を指定してください。

続けて、繰り返しを使って、LEDパネルの一番上の行だけ左から順にLEDを点灯させるプログラムを作成します。次の図の通り、[《8》回繰り返す]ブロックの内側にプログラムを作成してください。

<プログラムの説明>
❶[8×8 RGB LED《A10》のx《1》y《1》を《色》に点灯]ブロックのx座標の値を変数「X」にします。プログラム実行時に変数「X」に入っている値がx座標になります。
❷変数「X」に、変数「X」に1を足した値を入れます。繰り返すたびに変数「X」に入る値が1ずつ増えます。
変数「X」に入れる値が変化する仕組みを次の図でイメージしてください。

プログラムを実行すると、1行目の左から順にLEDが8個点灯します。

動画でご覧ください。
全てのLEDを順番に点灯する

先ほど作った、最初の行だけ左から順にLEDを点灯させるプログラムをアレンジします。新たに変数「Y」を追加して、次の図の通りプログラムを作りましょう。[《8》回繰り返す]ブロックの内側にさらに[《8》回繰り返す]ブロックを入れます。

<プログラムの説明>
❶横方向に8個順にLEDを点灯させるプログラムです。x座標に変数「X」入れ、y座標に新たに作った変数「Y」を指定しています。繰り返すたびに、変数「X」が1ずつ増えます。
❷次に指定するLEDの座標を1行下の左端にするためのプログラムです。繰り返すたびに、変数「X」が1にリセットされ、変数「Y」が1ずつ増えます。
プログラムを実行すると、LEDパネルの左上から順に点灯し右端まで8個点灯すると、次の行の左端からまた順番に点灯します。8行目の右端で終わります。

動画でご覧ください。