我使用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;
}
但我认为这不是正确的方法。我该如何以正确的方式实现它?
感谢您的帮助,
答案 0 :(得分:1)
看起来您只是从超声波传感器获取一次距离样本。从SampleProvider
获取getDistanceMode()
对象,将其存储在全局变量中,并在每次需要新样本时调用fetchSample()
。
但是,您可能希望确保不要经常向传感器询问新样本,因为这可能会使ping请求超载。与程序运行速度相比,声音可能会很慢。