LoginSignup
1
0

Pybricks Codeでモーターやセンサーの制御プログラムを作る

Posted at

前回の続きで、Pybricks Codeを使って簡単な制御プログラムを作成する例を示します。

ファイルの新規作成

新規ファイルを作成するには左ペインの上にある + 記号をクリックします。

スクリーンショット 2023-12-13 21.59.23.png

ファイル名を入力して「Create」ボタンをクリックします。

スクリーンショット 2023-12-13 22.01.15.png

「Use a Template」が有効になっていれば、指定のハブ用のテンプレートが展開されたファイルが作成されます。

スクリーンショット 2023-12-13 22.03.03.png

テンプレートでインポートされるのは次のものです。ハブによって違うのは、ハブ用のクラスぐらいですから、ハブのクラス名を変更するだけで、他のハブにも大部分流用できます。

  • 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 アイコンをクリックしてハブに接続します。

スクリーンショット 2023-12-13 22.37.59.png

接続できたら Run アイコンをクリックします。スクリプトをバイトコードにコンパイルした後にハブに転送され、実行が開始されます。Run 指示するのはメインとなるスクリプトにしてください。その他の依存スクリプトはインポート関係から自動的に判定して転送されます。

スクリプトが一度転送されたら、Pybrick Code なしで、スタンドアローンで実行できます(ハブのボタンを2回押します)。

実行を中断するには Stop アイコンを押します。スタンドアローンで動作している場合はハブのボタンを押すことで中断できます。長押しで電源断となります。

なお、各ハブの内蔵機能APIの詳細はここを参照してください。

入出力ポート

ハブにはセンサーやモーターを繋げる「ポート」が複数用意されています。ポートの仕様は、Pybricks Codeがサポートするハブで共通しているので、センサーやモーターをハブ間で使いまわせます。

スクリーンショット 2023-12-13 22.26.57.png

ポートのピン構成は次のようになっています。

ピン ラベル 機能
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)

IMG_7217.JPG

モーターの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のコンソール領域で確認してください。

IMG_7218.JPG

カラーセンサーAPIの詳細はここを参照してください。

次はマルチタスク制御

次回はマルチタスク制御について書く予定です。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0