package nl.ru.des.sensors;
+import java.util.HashSet;
+import java.util.Set;
+
+import lejos.hardware.Button;
import lejos.hardware.sensor.EV3GyroSensor;
import lejos.robotics.SampleProvider;
+import lejos.utility.Delay;
public class SensorCollector implements MessageHandler{
public static final int DELAY = 200;
- private static final float DANGER_DISTANCE_FRONT = 0.15f;
- private static final float DANGER_DISTANCE_BACK = 0.035f;
- private static final float DANGER_LIGHT = 0.45f;
+ private float DANGER_DISTANCE_FRONT = 0.175f;
+ private float DANGER_DISTANCE_BACK = 0.035f;
+ private float DANGER_LIGHT = 0.40f;
+
+ private Set<String> variables;
//Local sensors
private EV3GyroSensor gyroSensor;
gyroSamples = new float[gyro.sampleSize()];
leftLightSamples = new float[leftLight.sampleSize()];
rightLightSamples = new float[rightLight.sampleSize()];
+
ultraTime = System.currentTimeMillis();
leftLightTime = System.currentTimeMillis();
rightLightTime = System.currentTimeMillis();
gyroTime = System.currentTimeMillis();
+
+ color = -1;
+ leftTouch = false;
+ rightTouch = false;
+ frontUltra = Float.MAX_VALUE;
+ variables = new HashSet<String>();
+ }
+
+
+ public void calibrate() {
+ System.out.println("Put left light on Blue");
+ Button.waitForAnyEvent();
+ leftLight();
+ DANGER_LIGHT = leftLightSamples[0];
+ System.out.println("Light limit: " + Float.toString(DANGER_LIGHT));
+
+ Delay.msDelay(350);
+ System.out.println("Put left light on Black");
+ Button.waitForAnyEvent();
+ leftLight();
+ DANGER_LIGHT = (leftLightSamples[0]+DANGER_LIGHT)/2.0f;
+ System.out.println("Light limit: " + Float.toString(DANGER_LIGHT));
+
+ Delay.msDelay(350);
+ System.out.println("Place back ultra safe");
+ Button.waitForAnyEvent();
+ backDistance();
+ DANGER_DISTANCE_BACK = ultraSamples[0] + 0.05f;
+ System.out.println("Back ultra limit: " + Float.toString(DANGER_DISTANCE_BACK));
+
+ Delay.msDelay(350);
+ System.out.println("Place front ultra in danger");
+ Button.waitForAnyEvent();
+ DANGER_DISTANCE_FRONT = frontUltra;
+ System.out.println("Calibration done");
+ System.out.println("Front ultra limit: " + Float.toString(DANGER_DISTANCE_FRONT));
}
//Local sensors
}
//Remote sensors
- public boolean collected(int[] colors){
- return false;
+ public void reset(){
+ variables.clear();
+ }
+
+ public boolean collected(String var){
+ return variables.contains(var);
+ }
+
+ public void saveVar(String var) {
+ variables.add(var);
}
public int color(){