motor-shield-pwm.py

# この作品はMITライセンスの下で提供されています。
# Copyright (c) 2013-2023 OpenMV LLC. 全著作権所有。
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# モータシールドPWMの例
#
# この例では、OpenMV Camの
# モータシールドを制御する方法を示します。モータシールドはPYBモジュールを使って
# 制御され、PWMで速度を調整したりデジタルI/Oピンの状態を
# 設定したりできます。モータシールドは両方のモータに6本のI/Oピンが必要です。

import pyb

# これらのピンは回転方向を制御し、以下の他のPWMピンは
# 速度を制御します。各モータの方向は、A0/1が片方のHブリッジドライバの
# 2つの側であるHブリッジによって設定されます。
# B0/1はもう一つのHブリッジです。
pinADir0 = pyb.Pin("P3", pyb.Pin.OUT_PP, pyb.Pin.PULL_NONE)
pinADir1 = pyb.Pin("P2", pyb.Pin.OUT_PP, pyb.Pin.PULL_NONE)
pinBDir0 = pyb.Pin("P1", pyb.Pin.OUT_PP, pyb.Pin.PULL_NONE)
pinBDir1 = pyb.Pin("P0", pyb.Pin.OUT_PP, pyb.Pin.PULL_NONE)

# 前進または後退の動作には、Dir0/1は互いに異なる値である必要があります。
# 同じ値の場合はブレーキ動作になります。
# 異なる場合、モータは配線とdir0の値に応じて、
# どちらかの方向に回転します。
pinADir0.value(0)
pinADir1.value(1)

# 前進または後退の動作には、Dir0/1は互いに異なる値である必要があります。
# 同じ値の場合はブレーキ動作になります。
# 異なる場合、モータは配線とdir0の値に応じて、
# どちらかの方向に回転します。
pinBDir0.value(0)
pinBDir1.value(1)

# OpenMV CamのPWM出力を駆動する1KHzで動作するタイマーオブジェクトを
# 作成します。これは一度だけ作成すればよいです。
tim = pyb.Timer(4, freq=1000)

# このタイマーオブジェクトを使って、OpenMV Cam上に2つのPWM出力を作成します。
# これらのタイマーはモータの速度を制御します。ループ内で
# これらのタイマーのPWM比率を繰り返し設定していくことになります。
chA = tim.channel(1, pyb.Timer.PWM, pin=pyb.Pin("P7"))
chB = tim.channel(2, pyb.Timer.PWM, pin=pyb.Pin("P8"))

while True:
    for i in range(100):
        pyb.delay(100)
        chA.pulse_width_percent(i)
        chB.pulse_width_percent(99 - i)

    for i in range(100):
        pyb.delay(100)
        chA.pulse_width_percent(99 - i)
        chB.pulse_width_percent(i)

results matching ""

    No results matching ""