0

我正在使用 ev3 超声波传感器。我正在编写基于行为的 lejos 代码。当超声波传感器检测到不超过 30 厘米的物体时,我想做一些任务。这是我的代码:

public UltrasonicSensor(Port port)
    {
        sonar = new EV3UltrasonicSensor(port);
        sonar.getDistanceMode().fetchSample(value, 0);
    }

    @Override
    public boolean takeControl() {
        // TODO Auto-generated method stub
        return value[0] < 0.3;

    public void action() {
        ....
    }

    @Override
    public void suppress() {
        // TODO Auto-generated method stub
        suppressed = true;
    }

但我认为这不是正确的方法。如何以正确的方式实施它?

感谢帮助,

4

1 回答 1

1

看来您只从超声波传感器获取距离样本一次。从 中获取一个SampleProvider对象getDistanceMode(),将其存储在一个全局变量中,并fetchSample()在每次需要新样本时调用它。

但是,您可能需要确保不要过于频繁地向传感器询问新样本,因为这可能会使 ping 请求过载。与程序运行的速度相比,声音可能会很慢。

于 2016-01-02T03:08:01.897 回答