2025年1月9日

018-1.SPIKEプライムPython入門-第1回「ライトマトリクスに描く」

この連載では「レゴ エデュケーションSPIKEプライム(以下、SPIKE)」を使ったPython(SPIKEアプリ)によるプログラミングの方法を紹介します。(文/松原拓也)

◆ Pythonとは?

Python(パイソン)はプログラミング言語の一つです。Pythonは教育や人工知能の研究など様々な分野で使われていて、人気があります。 Pythonの主な特徴はオブジェクト指向を採用していることです。オブジェクト指向というのはプログラムの機能をオブジェクトという単位で切り分けて扱う手法のことです。オブジェクト指向は複雑なプログラムを作る場合に効果を発揮します
SPIKEアプリはPythonに最初から対応していますので、すぐにPythonを使ったプログラミングを始めることができます。 必要な操作はSPIKEアプリを起動して、「新しいプロジェクト」→「パイソン」→「作成する」を選択するだけです。

こちらがプログラミング用の画面です。
「ワードブロック」ではブロックを組み合わせてプログラムを作ってきましたが、このPythonでは文字だけを使ってプログラムを作ります。パッと見ただけでは、意味がわからないと思いますので、細かく紹介します。

画面に書かれている文字はプログラム(ソースコード)です。新しくプログラムを作ると、自動的にサンプルが入力されています。 左の1、2、3、…という数字は行番号です。この数字は行数を見るだけのものなので、入力する必要はありません。 1~4行目のプログラムはSPIKEのハブを動かすために下準備を行っています。ここを真面目に理解しようとすると大変なので、ひとまずは内容は気にせず、そのまま使ってかまいません。

画面の右側にあるのはナレッジベース(ヘルプ画面)です。
ここを順に読んでいけば、使い方を覚えることができるはず、、、ですが、「ライブラリ」とか「インポート」とか難しい言葉がいっぱい出てくるので読みこなすのは大変かもしれません。
画面右下にある黄色いボタンは「実行」ボタンです。有線または無線でラージハブと接続した状態で、これをクリックしてみましょう。

プログラムを実行すると、ハブのライトマトリクスに顔のマークが表示されました。 プログラムの意味は次の通りです。
(1~2行目)SPIKE用の命令を使えるように設定しています。
(4行目)PrimeHubというクラスからオブジェクトを作成します。
(6行目)ライトマトリクスに画像を表示します。「'HAPPY'」が顔のマークに対応しています。
1~4行目を実行することにより、hubという名前のオブジェクト(プログラムの部品)を通じてSPIKE用の関数が使えるようになります。ここの部分は丸暗記で使ってかまいません。
light_matrix.show_image関数の書式は「オブジェクト名.light_matrix.show_image('画像の名前' [,明るさ1~100])」です。第1引数の画像の名前は60種類以上が登録されています。第2引数を省略すると明るさは100になります。

◆ 文字や点を描く

light_matrix.write関数を使うと、文字や数値を表示することができます。書式は「オブジェクト名.light_matrix.write(文字 または数値)」です。
写真は「A」を表示する例です。文字の場合は’(シングルクォーテーション)で文字を囲みます。'ABC'のように複数の文字の場合はスクロールして表示します。

light_matrix.set_pixel関数を使うと、点を表示することができます。書式は「オブジェクト名.light_matrix.set_pixel(x座標, y座標 [,明るさ1~100])」です。第3引数を省略すると明るさは100になります。
座標は一番左上を(0,0)として考えます。

◆ for文のくり返し処理

写真は2つの点を描くプログラムの例です。
プログラムを実行すると、(0,0)と(1,1)に点を描きます。「x = 0」や「y = 0」は変数に代入するという命令です。C言語と違って、変数を作るための下準備はいりません。
もし、5つの点を描きたい場合、同じような処理をあと3回追加すればいいのですが、ちょっとプログラムにムダがあるように思います。
そこでfor文を使います。

for文は処理の繰り返しを行うことができるという機能です。for文を使ったプログラムがこちらです。
実行すると、5つの点が描かれます。for文で処理を5回くり返しているためです。

for文の書式がこちらです。for文の書式はいくつかありますが、ここでは「変数 in range(くり返し回数)」を使っています。変数は好きなものを使ってかまいません。この例では「i in range(5)」としていますので、処理を繰り返す中で変数iは0→1→2→3→4と変化します。くり返し処理は変数iが0~4の範囲で実行されますが、くり返し処理が終わった時点では変数iは5になっています。 for文の右端には「:(コロン)」が必要です。そして、繰り返したい処理は左側にタブを入れて字下げをします。この字下げのことを「インデント」といいます。タブはキーボードの「Tab」キー押すと入力できます。このアプリではスペースキー4回でタブ1つに置き換えることもできます。

ちなみに、この書き方でも正解です。
この場合は1個の変数だけで点を描いていますので、プログラムを短く済ませることができています。

当ブログの内容は、弊社製品の活用に関する参考情報として提供しております。
記載されている情報は、正確性や動作を保証するものではありません。皆さまの創意工夫やアイデアの一助となれば幸いです。