1

我是 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)

我可以在(有限的)文档中看到,您显然可以更改电机设置,但我找不到如何执行此操作的方向(或者即使它有用)。任何帮助,将不胜感激。

4

2 回答 2

3

ev3.speaker.say(text)合成语音。这很有趣,但速度很慢。这在像您这样的控制回路中尤其明显。

我建议ev3.speaker.beep()改用。您甚至可以根据反射值选择频率,这样您就可以“听到”传感器“看到”的内容。

于 2021-01-13T09:01:18.543 回答
2

所以问题是我使用“运行”命令来移动电机。运行似乎有一个加速和减速组件。

我使用“ dc ”而不是“run”,电机现在立即响应传感器数据。

于 2021-01-13T23:17:39.047 回答