光センサーの値が0~0.4の場合にイベントが発生する
lejos 0.9.1-beta の環境で開発
LightDetectorSample.java
import lejos.hardware.Button;
import lejos.hardware.port.SensorPort;
import lejos.hardware.sensor.EV3ColorSensor;
import lejos.hardware.sensor.SensorMode;
import lejos.robotics.RangeFinder;
import lejos.robotics.RangeFinderAdapter;
import lejos.robotics.objectdetection.Feature;
import lejos.robotics.objectdetection.FeatureDetector;
import lejos.robotics.objectdetection.FeatureListener;
import lejos.robotics.objectdetection.RangeFeatureDetector;
public class LightDetectorSample {
public static void main(String[] args) {
EV3ColorSensor lightSensor = new EV3ColorSensor(SensorPort.S2);
SensorMode light = lightSensor.getRedMode(); // 赤色LEDの反射光を読み取るセンサーモードを取得
RangeFinder rangeFinder = new RangeFinderAdapter(light); // 光センサーの値を読み取りやすくする
// 光センサーの値が0~0.4の時にイベントを発生させる、読み取り周期は20ms
RangeFeatureDetector lowerDetector = new RangeFeatureDetector(rangeFinder, 0.4f, 20);
lowerDetector.addListener(new LowerLightProcess()); // イベントが発生した時に呼び出されるインスタンスを設定
Button.waitForAnyPress(); // 何かボタンが押されるまで待つ
}
}
class LowerLightProcess implements FeatureListener {
// イベントが発生した時に呼び出されるメソッド
public void featureDetected(Feature feature, FeatureDetector detector) {
System.out.println("DETECT " + feature.getRangeReading().getRange());
}
}