微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在电机和传感器之间获得即时响应?

如何解决如何在电机和传感器之间获得即时响应?

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

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

解决方法

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。