MicroPython 2.0测试版5
试图了解stalled()在马达上是如何工作的。我在直流100下运行一个马达,并握住方向盘,使它不能移动。
但是stalled函数不会触发,实际上无论我做什么,我似乎都不能让它返回True?
我试着用更少的功率,但仍然不能从这个函数中得到任何东西。
#!/usr/bin/env pybricks-micropython
from pybricks import ev3brick as brick
from pybricks.ev3devices import Motor
from pybricks.parameters import Port, Stop
left_motor = Motor(Port.B)
speed = 800
# option 1
left_motor.dc(100)
# option 2
#left_motor.run_until_stalled(speed, Stop.HOLD, 100)
while True:
if left_motor.stalled():
print("stalled")如果我使用选项1:电机运行,我按住它直到它停止,没有任何报告。我松开它,它又开始了。
如果我使用选项2:马达运行,我握住它,它停止。但我从来没有看到一份报告说它停滞不前。
发布于 2020-03-28 04:00:16
尽管应用了最大占空比,但当电机不能达到目标速度或角度时,电机就会停止工作。
您的示例可以修改为:
#!/usr/bin/env pybricks-micropython
from pybricks.ev3devices import Motor
from pybricks.parameters import Port
from pybricks.tools import wait
# Initialize the motor
left_motor = Motor(Port.B)
# Start running the motor at 500 deg/s
left_motor.run(500)
# Do nothing until we are stalled
while not left_motor.stalled():
wait(10)
# Stop the motor
left_motor.stop()此示例等同于单行left_motor.run_until_stalled(500)。如果要将手动方法扩展到多个电动机,则手动方法非常有用。
问题中的dc()方法不设置目标速度或角度;它直接设置占空比,因此没有失速信息。
注意:从Pybricks版本Pybricks2.0开始,可以通过left_motor.control.stalled()访问left_motor.stalled()方法。截至2020年3月,它只是公开测试版,所以我不确定2019年8月原始帖子中报告的版本是否正确。
https://stackoverflow.com/questions/57709966
复制相似问题