[No.4]プログラムの基本は順序よく!〜フルーツを電光表示

小さなものづくりコンピューター「SPACEBLOCK(スペースブロック)」で、早速初めてのプログラムを作ってみましょう。今回は、「8×8 RGB LEDマトリックスパネル」(以下、LEDパネル)を接続して、絵を表示する装置に挑戦します。
必要なもの
- SPACEBLOCK本体
- USBケーブル
- 電池ボックス
- 8×8 RGB LEDマトリックスパネル(LEDパネル)※
- プログラミングをするパソコン

準備:LEDパネルをSPACEBLOCK本体に接続

SPACECLOCKのウェブサイトに自分のアカウントでログインしたら、[新しいプロジェクト]を作成してプログラミング画面を開きます。画面右上からデバイスを接続して、「デバイスON」の状態でプログラムを作成しましょう。

LEDパネルを操作するプログラムを作る

[RGB LED(A10)を点灯]ブロックを[プログラム開始]につなぎ、LEDパネルで表示させたい絵や模様を描きます。

[RGB LED(A10)を点灯]ブロックの「A10」というのは、LEDパネルを挿した横向きソケットの番号です。このように、SPACEBLOCKに何か別のパーツを接続したときは、プログラムをする際に接続したソケットの番号を指定します。

プログラムを実行してみると、LEDに鮮やかなりんごの絵が表示されました。


りんごのプログラムがあるのに、なぜりんごは表示されないのでしょうか? りんごが表示されてからバナナが表示されるようにするために、プログラムを修正していきましょう。
プログラムの実行は猛スピード!「一時停止」を入れよう
このプログラムを点検すると、りんごを表示するブロックのすぐ下にバナナを表示するブロックがつながっています。プログラムは上から下に向かってものすごいスピードで実行されます。このプログラムの場合、りんごを表示する命令の次の瞬間にバナナを表示する命令が実行されたので、バナナしか表示されていないように見えたのです。一瞬赤く光って見えたのはりんごの表示がほんの一瞬見えたからです。
修正するために、りんごを表示するプログラムのすぐ下に、[基本]カテゴリーの[一時停止(1000)ミリ秒]ブロックを入れます。これでプログラムを実行すると、りんごが1秒表示されてから、バナナが表示されるようになりました。

[一時停止(1000)ミリ秒]ブロックを入れたおかげで、バナナを表示する命令に行く前にりんごが見える時間ができました。なお、「ミリ秒」というのはプログラミングでよく使う単位で、1秒が1000ミリ秒です。
コンピューターへの指示は正確に!
もし、友達に「りんごとバナナを順番に見せて」とお願いしたら、適度なスピードで順番に見せてくれるでしょう。でも、コンピューターはプログラムに書かれたことだけを実行するので、「適度なスピード」という判断はしてくれません。プログラマーである皆さんが、コンピューターがわかる言葉で正確に細かく順序良く指示する必要があります。
今回のように、次のブロック進む前に止まっていて欲しいときは[一時停止(1000)ミリ秒]を使うことを覚えておきましょう。ライトや動きなどを指示するプログラムではとてもよく使う技です。
さらに、さきほどのプログラムにさらに少し修正を加えて、りんごが2秒表示されたらバナナが表示され、バナナが2秒表示されたらLEDパネルのライトが消えるようにします。LEDを消すには[RGB LED(A10)を全て消灯]ブロックを使います。

このプログラムをSPACEBLOCKに転送して、スタンドアローンモードで動かしてみましょう。
SPACEBLOCKをパソコンから切り離して、電池ボックスの電源をONにすると、リンゴとバナナの絵が2秒ずつ表示されて消えます。もう一度プログラムを実行したいときは、いったん電源をOFFにしてもう一度ONにします。
[プログラム開始]ブロックに続けて作るプログラムは、このように電源をONにしたときに実行が始まります。
こんどは、電源をオンにしたときにいきなりLEDがつくのではなく、ボタンを押すとLEDがつくというプログラムにアレンジします。続きは次回!