Как получить немедленную реакцию между двигателями и датчиками?
Я новичок в pybricks и нашел очень мало документации, чтобы помочь ответить на мой собственный запрос. Я написал, как мне казалось, простую программу, которая будет вращать моего робота на месте, пока ультразвуковой датчик что-то не увидит. Затем он будет продвигаться вперед. Если его толкнуть назад и он увидит черную линию, он должен попытаться отклониться в сторону.
Следующий код «работает», но его реакция на датчики ультразвука и света значительно задерживается:
#!/usr/bin/env pybricks-micropython
from pybricks.hubs import EV3Brick
from pybricks.ev3devices import Motor, ColorSensor, UltrasonicSensor
from pybricks.parameters import Port
from pybricks.tools import wait
ev3 = EV3Brick()
eyes = UltrasonicSensor(Port.S2)
left_motor = Motor(Port.B)
right_motor = Motor(Port.A)
right_light = ColorSensor(Port.S1)
left_light = ColorSensor(Port.S4)
while True:
if right_light.reflection() < 50:
ev3.speaker.say('black')
left_motor.run(500)
right_motor.run(-100)
wait(2000)
left_motor.run(500)
right_motor.run(500)
wait(1000)
if eyes.distance() > 200:
left_motor.run(500)
right_motor.run(-500)
else:
left_motor.run(-500)
right_motor.run(-500)
Я вижу в (ограниченной) документации , что вы, по-видимому, можете изменить настройки двигателя, но я не могу найти указание, как это сделать (или даже если это было бы полезно). Любая помощь будет оценена по достоинству.
2 ответа
ev3.speaker.say(text)
синтезирует речь на ходу. Это весело, но очень медленно. Это особенно заметно в контуре управления, подобном вашему.
я бы рекомендовал использовать
ev3.speaker.beep()
вместо. Вы даже можете выбрать частоту на основе значения отражения, чтобы вы могли «слышать» то, что «видит» датчик.