前回の続きで、Pybricks Codeを使って簡単な制御プログラムを作成する例を示します。
ファイルの新規作成
新規ファイルを作成するには左ペインの上にある + 記号をクリックします。
ファイル名を入力して「Create」ボタンをクリックします。
「Use a Template」が有効になっていれば、指定のハブ用のテンプレートが展開されたファイルが作成されます。
テンプレートでインポートされるのは次のものです。ハブによって違うのは、ハブ用のクラスぐらいですから、ハブのクラス名を変更するだけで、他のハブにも大部分流用できます。
- TechnicHub -- 選択したハブ用のクラスです
オブジェクトは変数hub
に設定されます - Motor -- モーターのクラスです
- Button, Color, Direction, Port, Side, Stop -- モータやセンサーに指定するパラメータ値
- DriveBase -- 車体の走行制御のためのクラス
- wait, StopWatch -- 時間に関する関数、クラス
ハブ用のクラスには次のものがあります。
ハブ | ハブ用のクラス | 備考 |
---|---|---|
ラージ ハブ | PrimeHub | |
Robot Inventer Hub | InventerHub | PrimeHub と名前は違うだけ |
スモール ハブ | EssentialHub | |
Technic ハブ | TechnicHub | |
City ハブ | CityHub | |
Boost ハブ | MoveHub |
ハブの LED をLチカ
ハブ自体の制御例として、Lチカのコードを示します。
from pybricks.hubs import TechnicHub
from pybricks.parameters import Color
from pybricks.tools import wait
# ハブを初期化
hub = TechnicHub()
# ライトの点灯と消灯を繰り返す
while True:
hub.light.on(Color.RED) # ハブのLEDを赤色に点灯
wait(1000) # 1秒待機
hub.light.off() # ハブのLEDを消灯
wait(500) # 0.5秒待機
コードを入力しらた Bluetooth アイコンをクリックしてハブに接続します。
接続できたら Run アイコンをクリックします。スクリプトをバイトコードにコンパイルした後にハブに転送され、実行が開始されます。Run 指示するのはメインとなるスクリプトにしてください。その他の依存スクリプトはインポート関係から自動的に判定して転送されます。
スクリプトが一度転送されたら、Pybrick Code なしで、スタンドアローンで実行できます(ハブのボタンを2回押します)。
実行を中断するには Stop アイコンを押します。スタンドアローンで動作している場合はハブのボタンを押すことで中断できます。長押しで電源断となります。
なお、各ハブの内蔵機能APIの詳細はここを参照してください。
入出力ポート
ハブにはセンサーやモーターを繋げる「ポート」が複数用意されています。ポートの仕様は、Pybricks Codeがサポートするハブで共通しているので、センサーやモーターをハブ間で使いまわせます。
ポートのピン構成は次のようになっています。
ピン | ラベル | 機能 |
---|---|---|
1 | M1 | モータ出力用 |
2 | M2 | モータ出力用 |
3 | GND | グラウンド |
4 | VCC | 3.3V |
5 | D1 | UART(ハブ→デバイス) |
6 | D2 | UART(デバイス→ハブ) |
モーターの制御例
ポートに繋いだモーターを制御する例を示します。
モータのAPIはどのハブでも共通なので、次のコードはどのハブでも実行できます。
from pybricks.pupdevices import Motor
from pybricks.parameters import Port
from pybricks.tools import wait
# ポート A に繋いだモーターの初期化。
example_motor = Motor(Port.A)
# モーターを時計回りに 500°/s で動作させる。
example_motor.run(500)
# 3秒待機。
wait(3000)
# モーターを反時計回りに 500°/s で動作させる。
example_motor.run(-500)
# 3秒待機。
wait(3000)
モーターのAPIの詳細はここを参照してください。
センサーの制御例
ポートに繋いだセンサーの例として、カラーセンサーを取り上げます。
from pybricks.pupdevices import ColorSensor
from pybricks.parameters import Port
from pybricks.tools import wait
# ポート A に繋いだカラーセンサーを初期化。
sensor = ColorSensor(Port.A)
while True:
# 色と反射光を読み取る。
color = sensor.color()
reflection = sensor.reflection()
# 計測した色をと反射光を表示。
print(color, reflection)
# 値が読み取れたか分かるよう、少し待機。
wait(100)
※ print()関数による表示は Pybricks Codeのコンソール領域で確認してください。
カラーセンサーAPIの詳細はここを参照してください。
次はマルチタスク制御
次回はマルチタスク制御について書く予定です。