Как работает функция 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 года, верна.