Как работает функция stalled() в Pybricks-MicroPython

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: двигатель работает, я держу его, он останавливается. Но ни в коем случае я не вижу сообщения о том, что оно застопорилось.

0 ответов

Двигатель останавливается, когда он не может достичь своей целевой скорости или угла, несмотря на использование максимального рабочего цикла.

Ваш пример можно адаптировать так:

#!/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()метод в вопросе не устанавливает целевую скорость или угол; он устанавливает рабочий цикл напрямую, поэтому информация об остановке отсутствует.

Обратите внимание left_motor.stalled() метод вместо этого доступен через left_motor.control.stalled()начиная с версии Pybricks Pybricks 2.0. Он находится в публичной бета-версии только с марта 2020 года, поэтому я не уверен, что версия, указанная в исходном сообщении в августе 2019 года, верна.

Другие вопросы по тегам