SPIKEプライムで
Pythonコーディングをはじめよう!

Getting Started/ここから始めよう

Python(パイソン)でのコーディング(プログラム作成)学習はここから始められます。以下の各章ではSPIKEに関するPython関数(機能)について多くのプログラム例があります。必要に応じてプログラム例をプログラミングキャンバスへコピー&ペーストすることで簡単にPythonプログラムを作成できます。

では始めましょう!

Pythonでのプログラムの書き方


Pythonは非常に直感的なテキストベースのコーディング言語です。簡潔で読みやすいため初心者にとって優れたプログラミング言語です。また、WEB開発からソフトウェア開発、科学アプリケーションまで、あらゆる用途に使用できるため、プログラム開発者にとっても優れた言語です。
Pythonでプログラムを書く際に覚えておくべきルールはほんのわずかです。

  • ライブラリのインポート
  • コメントコード(プログラム内のコメント)
  • ネーミングのしきたり(命名規則)

です。

ライブラリのインポート

Pythonプロジェクトを作成するときは、多くの場合、関数のライブラリをインポートする必要があります。プログラミングに関して言えば、ライブラリは基本的に、「レシピ」を作成するために使用できる全ての「材料」です。
SPIKEを使用するときは、様々なハードウェアコンポーネント(モーター、ハブ、センサーなど)にリンクされているライブラリを常に「含める」必要があります。
書式例

from spike import PrimeHub, MotorPair

以下は、インポートできるライブラリの一部です。

  • App(アプリ)
  • Hub(ハブ)
  • LightMatrix(ライトマトリックス)
  • Buttons(ボタン)
  • Speaker(スピーカー)
  • BrickStatusLight(ブロックステータスライト)
  • MotionSensor(モーションセンサー)
  • DistanceSensor(距離センサー)
  • ColorSensor(カラーセンサー)
  • ForceSensor(フォースセンサー)
  • Motor(モーター)
  • MotorPair(モーターペア)
  • Operators(演算子)

インポートされたライブラリは*.pyファイルの先頭にあり、プログラム内に一度だけ記述します。
どのライブラリをインポートすればよいかわからない場合は、次の方法でいつでも可能な限りすべてをインポートできます。

from spike import PrimeHub, LightMatrix, Button, StatusLight, ForceSensor, MotionSensor, Speaker, ColorSensor, App, DistanceSensor, Motor, MotorPair
from spike.control import wait_for_seconds, wait_until, Timer

 Pythonのコメント

「#」で始まる全ての行はコメントとみなされます。したがって、アクションとしては実行されません。

# This is a comment これはコメントです
# This is another comment これは別のコメントです

インデント(字下がり)

Pythonは大文字、スペース、インデントに敏感です。これにより、ルールに慣れたら、コーディングが簡単になります。
例えば、次のような違いがあります。

x = 0
if x == 1:
print('LEGO')

そして

x = 0
if x == 1:
    print('LEGO')

このように、Pythonではインデント(字下げ)の深さを使って、コマンドのブロック範囲を指定します。Pythonでのインデントはスペース4つ分の字下げを基本とします。また、インデント(字下げ)を使うとプログラムの構造が分かりやすく、読みやすいプログラムになります。

命名規則(ネーミングのしきたり)

Pythonでは、変数や関数などのオブジェクトに自由に名前をつけることができますが、使えない文字、特別な意味を持つ文字列は使えません。

  • 「%」、「&」などの「_(アンダーバー)」以外の記号が入った名前
  • 1文字目が数字の名前
  • 予約語(Pythonの中で特別な意味を持つ単語)

 

このナレッジベースの利用

このナレッジベースは、次のセッションで構成されています。

  1. 段階的な「getting started」の流れは、Spike Hub、モーター、センサーを制御するために使用されるもっとも一般的な機能の探索をガイドします。また、このセクションではWord Block Translatorで、一部の関数についてWord BlockをPythonコードに変換する方法を示します。
  2. チームワークの練習に使用できるレッスン「ブロックを渡して」
  3. 「SPIKE Pythonリファレンス」では実験に使用できる全ての関数(つまり、サンプルプログラム)の説明が掲載されています。これらのサンプルプログラムを探索して実行するには、それらをプロジェクトにコピーし、変更してカスタマイズします。

Part 1:Programming Simple Outputs
/簡単な出力プログラミング


準備

ハブの準備

ハブを用意します。ハブのための短いプログラムをいくつか作成します。
バッテリーが取り付けられていることを確認して下さい。
センターボタンを押してOnになっていることを確認して下さい。
BluetoothまたはUSB経由でデバイスに接続していることを確認して下さい。

ライトマトリックスの制御

1. Pythonを使用して最初のプログラムを作成します。
ボックス内のアイコンを押して、以下のコードをコピーします。
2. コードをプログラミングキャンパス(これが、Pythonコードを記述する場所です)に貼り付けます。
緑の行はコメントで、アクションには影響しません。他の行はプログラムです。この最初のプログラムの内容を理解できますか?
3. 次に、プログラムを再生して下さい!

# PrimeHubクラスをインポート
from spike import PrimeHub
from spike.control import wait_for_seconds
# ハブを初期化
your_hub = PrimeHub()
# 笑顔を5秒間点灯後に消灯
your_hub.light_matrix.show_image('HAPPY')
wait_for_seconds(5)
your_hub.light_matrix.off()

ハブにこれが表示されるはずです。
スマイル顔

4. ライトマトリクスに表示される画像を変更します。
既にあるコードで、パラメーター'HAPPY'を'HEART'に変更します。これは、ハブにスマイル顔ではなく、ハートを点灯します。
または、コードをコピーしてプログラムの最後の行の後に貼り付けます。スマイル顔が5秒間光り、次にハートが5秒間光ります。

# 別の画像を追加
your_hub.light_matrix.show_image('HEART')
wait_for_seconds(5)
your_hub.light_matrix.off()

この詳細については、このナレッジベースの「SPIKE Pythonリファレンス」セクションをご覧ください。

おめでとう!
Pythonを使用して最初のプログラムを作成しました。
もっと学びましょう!


小さなビープ音の再生と時間

ハブでビープ音を鳴らしてみましょう。
1.プログラミングキャンパスにプログラムがある場合は、それを削除するか、新しいプロジェクトを開始して続行することをお薦めします。
2.次に以下のコードをプログラミングキャンパスに記述(コピー)します。
3.”from spike import "から始まる1行がコードにあることを確認して下さい。
4.プログラムを実行!

# Import the PrimeHub class
# PrimeHubクラスをインポート
from spike import PrimeHub
# ハブを初期化
hub = PrimeHub()
# ビープ、ビープ、ビープ!
hub.speaker.beep(60, 1)

5. ビート(拍子)とトーン(音程)を変更します。これを行う1つの方法を次に示します。

# 新しい曲です
hub.speaker.beep(600.5)
hub.speaker.beep(671.0)
wait_for_seconds(0.5)
hub.speaker.beep(60, 0.5)

この詳細については、このナレッジベースの「SPIKE Pythonリファレンス」セクションをご覧ください。

音を鳴らす

デバイスから再生するサウンドを追加することもできます。
1. 以下のコードをプログラミングキャンパスに記述(コピー)します。プログラムを実行!

# PrimeHubクラスをインポート
from spike import App
# appを初期化
app = App()
app.play_sound('Cat Meow 1')

別のサウンドを選択して再生するか、このプログラムを使用して下さい。

app.play_sound('Triumph')

この詳細については、このナレッジベースの「SPIKE Pythonリファレンス」セクションをご覧ください。

チャレンジ

これまでに学習した機能を使用します
「3、2、1、BOOM!」などの短いカウントダウンプログラムを作成します。

Part 2:Controlling Motor/モーターの制御


 準備

Lモーターモジュールを接続してオンにします。
Lモーターモジュールを文字の書かれたポートの1つに接続します(例えばポートC)。

ひとつのモーターを時間で動かす

2秒間モーターを動かしてみましょう
1.このコードをプログラミングキャンパスにコピー(記述)します。
2.プログラムを再生し、モーターを観察します。

from spike import Motor
#モーターの初期化
motor = Motor('C')
#75%の速度で2秒間、時計方向に回転
motor.run_for_seconds(2.0, 75)

3.コードを変更して、モーターの速度と動作の継続時間を変更します。
例えば、

#30%の速度で6.5秒間、反時計回りに回転
motor.run_for_seconds(6.5, -30)

この詳細については、このナレッジベースの「SPIKE Pythonリファレンス」セクションをご覧ください。

ひとつのモーターを角度単位で動かす

モーターを360度回転させましょう
1.以下のコードをプログラミングキャンパスにコピー(記述)します。
2.プログラムを再生し、モーターを観察します。

from spike import Motor
#モーターの初期化
moto = Motor('C')
# 360度回転
motor.run_for_degrees(360)

3.回転角度を使用して、モーターの回転方向を変更するようにコードを変更します。
例えば、

# 30%の速度で360度、時計回りに回転
motor.run_for_degrees(-360, 30)

この詳細については、このナレッジベースの「SPIKE Pythonリファレンス」セクションをご覧ください

ひとつのモーターを0度ポジションに動かす

モーターを現在の位置から0度の位置に移動しましょう。
0度の位置はモーターにマーカーで表示されています(画像参照)。
Motor Position

1.以下のコードをプログラミングキャンパスにコピー(記述)します。
2.プログラムを再生し、モーターを観察します。

 from spike import Motor
# モーター初期化
motor = Motor('C')
# モーターを「0」の位置に配置し、マーカーをそろえる
motor.run_to_position(0, 'shortest path', 75)

3.コードを変更して、モーターを別の位置で停止させましょう

# モーターを異なる速度で、異なる位置に動かす
wait_for_seconds(1)
motor.run_to_position(0, 'shortest path', 30)
wait_for_seconds(1)
motor.run_to_position(90, 'clockwise', 100)

この詳細については、このナレッジベースの「SPIKE Pythonリファレンス」セクションをご覧ください

チャレンジ

ビート(拍子)に応じて2つのモーターを動かす短いプログラムを作成しましょう。例えば、両方のモーターを同じ方向に、両方のモーターを反対方向に、片方のモーターを反対方向に、などです。
これまでに学習した機能を使用します。