ev3 超声波传感器在基于 lejos 行为的编程中的使用

usage of ev3 ultrasonic sensor in lejos behavior based programming

我使用的是 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;
    }

但我认为这不是正确的方法。我怎样才能以正确的方式实施它?

感谢您的帮助,

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

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