| ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
|---|
パワーファンクション¶
ColorDistanceSensor は、赤外線信号を送信してパワーファンクションの赤外線レシーバーを制御できます。この技術を使って、中型、大型、特大、列車用モーターを制御できます。赤外線の到達距離は、角度や周囲の状況にもよりますが、約 30 cm が限界です。
図 3 Power Up ColorDistanceSensor (左)、パワーファンクションの赤外線レシーバー(中央)、パワーファンクションのモーター(右)。ここでは、レシーバーはチャンネル1を使用し、赤のポートにモーターを繋いでいます。¶
- class PFMotor(sensor, channel, color, positive_direction=Direction.CLOCKWISE)
ColorDistanceSensorの赤外線機能でパワーファンクションのモーターを制御します。- パラメータ:
sensor (ColorDistanceSensor) -- Sensor オブジェクト。
channel (int) -- 受信機のチャンネル番号:
1,2,3,4のいずれか。color (Color) -- 受信機のカラーマーカー:
Color.BLUEまたはColor.REDpositive_direction (Direction) -- 正のデューティ比の値を与えたとき、モーターがどの方向に回転すべきかを示します。
- awaitdc(duty)
指定のデューティ比(「パワー」とも言います)でモーターを回転させます。
- パラメータ:
duty (Number, %) -- デューティ比 (-100.0 から 100 の間)。
- awaitstop()
モーターを停止し、惰性で回転するままにします。
モーターは摩擦により徐々に停止します。
- awaitbrake()
モータに受動的にブレーキをかけます。
摩擦による停止に加え、モータが動いている間に発生した電圧で停止します。
サンプルコード¶
パワーファンクションのモーターの制御¶
from pybricks.pupdevices import ColorDistanceSensor, PFMotor
from pybricks.parameters import Port, Color
from pybricks.tools import wait
# センサーを初期化。
sensor = ColorDistanceSensor(Port.B)
# チャンネル1、赤のポートに繋いだモーターを初期化。
motor = PFMotor(sensor, 1, Color.RED)
# 回転と停止。
motor.dc(100)
wait(1000)
motor.stop()
wait(1000)
# 逆向き、半分のスピードで回転して停止。
motor.dc(-50)
wait(1000)
motor.stop()
複数のパワーファンクションのモーターの制御¶
from pybricks.pupdevices import ColorDistanceSensor, PFMotor
from pybricks.parameters import Port, Color, Direction
from pybricks.tools import wait
# センサーを初期化。
sensor = ColorDistanceSensor(Port.B)
# 複数のモーターを別々のチャンネルに繋いで利用できる。
arm = PFMotor(sensor, 1, Color.BLUE)
wheel = PFMotor(sensor, 4, Color.RED, Direction.COUNTERCLOCKWISE)
# 両モーターを加速する。これらの値のみ利用可能。
# 他の値は切り捨てて、最も近い値になる。
for duty in [15, 30, 45, 60, 75, 90, 100]:
arm.dc(duty)
wheel.dc(duty)
wait(1000)
# 信号をより確実にするために、コマンドとコマンドの間に
# 短い間がある。そのため、速度を変えたり、少しずらした
# タイミングで止まったりする。
# 両モーターにブレーキをかける。
arm.brake()
wheel.brake()