SPIKEプライムで
Pythonコーディングをはじめよう!
Getting Started/ここから始めよう
Python(パイソン)でのコーディング(プログラム作成)学習はここから始められます。以下の各章ではSPIKEに関するPython関数(機能)について多くのプログラム例があります。必要に応じてプログラム例をプログラミングキャンバスへコピー&ペーストすることで簡単にPythonプログラムを作成できます。
では始めましょう!
More Python Basic/その他のパイソンの基本
テキストベースのプログラミング言語として、パイソンにはさらに説明する必要のあるいくつかの原則があります。
- フロー実行
- データ型
- クラス、メソッド、オブジェクト
Flow Execution/フロー実行
これを、「実行の流れ(フロー)」と言います。

その流れ(フロー)を変更するには多くの方法があります。例えば、コマンド wait_for_seconds(1)を使用すると、プログラムの実行を1秒間(()内で指定した時間(秒))一時停止できます。
フローは次のようになります。

If/Else
プログラムは、条件が真であるかどうか(条件が成立するかどうか)をチェックします。真である(条件が成立する)場合、「if」ブロック内に配置されたコマンドを実行します。真でない(成立しない)場合、「else」ブロック内に配置されたコマンドを実行します。
フローは次のようになります。

「if」ブロック内、「else」ブロック内の内容(プログラムブロック)を示すには、インデント(字下げ)する必要があります。
Whileループ(繰り返し)

パイソンでは、頻繁に while True:構文構造を使用します。これは、条件が常に True(真)であるため、ブロック内プログラムを無期限に繰り返すこと(永久ループ)を意味します。
ループ内の内容(プログラムブロック)を示すには、インデント(字下げ)津す必要があります。
データ型
テキストベースのプログラミング言語を使用する場合、様々なタイプの値を実験する必要があります。最初は、主に数値、文字列、リストを使用します。
- 数値(整数):0を含む正(+)または負(-)の整数
my_integer = 7
print(my_integer)
- 数値(浮動小数点):小数を含む数値
my_float = 7.0
print(my_float)
- 文字列(テキスト):任意の文字
my_string = 'Hello World'
print(my_string)
- リスト(配列):ひとまとめにされた複数の値。各値にはインデックスを使用してアクセスできます。インデックスは「0」から始まります。
mylist = [1, 2, 3]
print(mylist[1])
Class / Object / Method / Properties
クラス / オブジェクト / メソッド / プロパティ
パイソンはオブジェクト指向プログラミング言語です。
仕組みは次の通りです。
- SPIKEライブラリでは、プログラム可能な電子コンポーネントを定義しています。これらはクラスにグループ化されています。
この例は、ハブで実行できる全てを定義するハブクラスです:
from spike import PrimeHub - クラスを使用するには、そのコピーを作成する必要があります。コピーを作成するアクションは、「オブジェクトの作成」と呼ばれます。
コンポーネントを初期化することによって行われます:
my_own_hub_object = PrimeHub() - クラスのコピー(つまり、オブジェクト)を作成したので、それを使用して多くの「こと」を行うことができます。これらの「もの」はメソッドを呼ばれ、時には関数と呼ばれます。メソッドにはパラメータがある場合とない場合があります。例えば、
# 以下のshow_image()メソッドには「HAPPY」と言うパラメーターがあります
my_own_hub_object.light_matrix.show_image('HAPPY')
# 以下のstop()メソッドはパラメータを持ちません
motor.stop()
Lesson 1:Pass the Brick/ブロックを渡して
教室で試すことができるレッスンです。「入門」ステップのいくつかを館利用した後、学習状況でパイソンコーディングスキルを試すことができます。ワードブロックを使用するレッスンは、このアプリの「その他のリソース」セクションにもあります。
楽しんで!
主な目的
このレッスンでは、Pythonを使用してロボットハンドをプログラミングしながら、様々なタイプの人々と効果的かつ丁寧に作業する能力を示します。
あなたはチームの一員ですか?
スポーツ、音楽、ダンス、ゲーム・・・チームはあらゆる場所で見られます。あなたのチームにはリーダーがいますか?あなたのリーダーは何をしますか?
ロボットハンドを組み立てるのに5分間の時間があります!

課題#1:チームリーダーを選び、その指示に従います。出来る限り早く作業して下さい。
- 1台のロボットハンドを組み立てる
- 6このLEGOブロックを用意する
ロボットハンドを試す

ハブの左ボタンを押してプログラムを再生し、ロボットハンドが閉じることをテストします。
from spike import Motor, PrimeHub
# モーター、ハブ初期化
hub = PrimeHub()
motor = Motor('C')
# これは開始するために位置をハンドを開きます
motor.run_for_seconds(1, 75)
while True :
#これにより、ハブの左ボタンを押している時にハンドを閉じることができます
hub.left_button.wait_until_pressed()
motor.set_stall_detection(False)
motor.start(-75)
#これにより、ハブの左ボタンを離した時にハンドが開きます
hub.left_button.wait_until_released()
motor.set_stall_detection(True)
#↑↑↑↑↑↑↑↑
#ここにコードが1行ありません
ロボットハンドをコントロールして下さい!
プログラムを完成させて、ロボットハンドを開閉します。正しく機能するために必要なコマンドがありません。
(ヒント:プログラムのコメントを見て下さい)
2分以内に6個のブロックを移動

課題#2:新しいチームリーダーを選び、その指示に従います。
ロボットハンドを使用して、十番に1つずつブロックをポイントAからポイントBへ移動します。
3分で出来る限り多くのブロックを積み上げる

課題#3:鉄の新しいチームリーダーの番です。
リーダーの指示に従い、ロボットハンドを使って交互にレンガを積み重ねます。
気をつけて!タワーを倒した場合は、最初からやり直さなければなりませんよ!
ブロックをある場所から別の場所に移動する

課題#4:別のチームとペアを組み、リーダーを1人選びます。
チームA:ロボットハンドを使って順番にブロックを拾います。チームBのところへ行ってロボットハンドからブロックを渡します。
チームB:チームAから渡されたブロックをロボットハンドで受け取り、指定された場所に運びます。
どうでした?
うまく出来たこと、もっと上手にできたかもしれない個を二ついて考えて下さい。
チームワークを改善する新しい方法を見つけましたか?