ev3dev - использование ультразвукового датчика с питоном - PullRequest
0 голосов
/ 16 февраля 2019

Я довольно новичок в программировании и робототехнике и борюсь со следующим.Я использую кирпич Lego Mindstorms EV3 и настраиваю среду ev3dev2.Я хотел бы запрограммировать робота таким образом, чтобы он постоянно получал расстояние от ультразвукового датчика и останавливался, когда он опускался ниже некоторого значения.моя первая попытка была примерно такой:

from ev3dev2.auto import *

m_right = LargeMotor(OUTPUT_A)
m_left = LargeMotor(OUTPUT_D)
us = UltrasonicSensor(INPUT_4)
us.MODE_US_DIST_CM = 'US_DIST_CM'

def move_timed():
    m_right.run_timed(time_sp=3000, speed_sp=400)
    m_left.run_timed(time_sp=3000, speed_sp=400)
    m_right.wait_while('running')
    m_left.wait_while('running')

def move_stop():
    m_right.stop()
    m_left.stop()

def start_moving():
    dist=us.value()/10
    while dist < 20:
        move_timed()
    else:
        move_stop()

start_moving()

, когда эти функции называются us.value () измеряли расстояние только один раз, а не непрерывно.в ev3dev-lib есть также свойство UltrasonicSensor.distance_centimeters, но я не могу получить его значение.хотя мои попытки получить эти значения потерпели неудачу.когда я меняю его на:

def start_moving():
    dist=us.distance_centimeters
    while dist < 20:
        move_timed()
    else:
        move_stop()

, я всегда получаю «Один или несколько аргументов были вне диапазона или недопустимы».благодарен за любые идеи, как получить ценность непрерывно!

ev3dev версия: 4.14.96-ev3dev-2.3.2-ev3

ev3dev-lang-python версия: python3-ev3dev 1.2.0

...