首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Pybricks-MicroPython中,stalled()函数是如何工作的

在Pybricks-MicroPython中,stalled()函数是如何工作的
EN

Stack Overflow用户
提问于 2019-08-29 20:13:30
回答 1查看 501关注 0票数 2

MicroPython 2.0测试版5

试图了解stalled()在马达上是如何工作的。我在直流100下运行一个马达,并握住方向盘,使它不能移动。

但是stalled函数不会触发,实际上无论我做什么,我似乎都不能让它返回True?

我试着用更少的功率,但仍然不能从这个函数中得到任何东西。

代码语言:javascript
复制
#!/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:马达运行,我握住它,它停止。但我从来没有看到一份报告说它停滞不前。

EN

回答 1

Stack Overflow用户

发布于 2020-03-28 04:00:16

尽管应用了最大占空比,但当电机不能达到目标速度或角度时,电机就会停止工作。

您的示例可以修改为:

代码语言:javascript
复制
#!/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月原始帖子中报告的版本是否正确。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57709966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档