added gracefull shutdown
[des2015.git] / dsl / runtime / src / nl / ru / des / sensors / SensorCollector.java
index db10870..af8e87a 100644 (file)
@@ -3,15 +3,18 @@ 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;
+import nl.ru.des.LCDPrinter;
 
 public class SensorCollector implements MessageHandler{
        public static final int DELAY = 200;
 
-       private static final float DANGER_DISTANCE_FRONT = 0.175f;
-       private static final float DANGER_DISTANCE_BACK = 0.035f;
-       private static final float DANGER_LIGHT = 0.40f;
+       private float DANGER_DISTANCE_FRONT = 0.175f;
+       private float DANGER_DISTANCE_BACK = 0.035f;
+       private float DANGER_LIGHT = 0.40f;
        
        private Set<String> variables;
        
@@ -39,6 +42,7 @@ public class SensorCollector implements MessageHandler{
                gyroSamples = new float[gyro.sampleSize()];
                leftLightSamples = new float[leftLight.sampleSize()];
                rightLightSamples = new float[rightLight.sampleSize()];
+
                ultraTime = System.currentTimeMillis();
                leftLightTime = System.currentTimeMillis();
                rightLightTime = System.currentTimeMillis();
@@ -51,6 +55,36 @@ public class SensorCollector implements MessageHandler{
                variables = new HashSet<String>();
        }
        
+
+       public void calibrate() {
+               LCDPrinter.print("Put left light on Blue");
+               Button.waitForAnyEvent();
+               leftLight();
+               DANGER_LIGHT = leftLightSamples[0];
+               LCDPrinter.print("Light limit: " + Float.toString(DANGER_LIGHT));
+
+               Delay.msDelay(350);
+               LCDPrinter.print("Put left light on Black");
+               Button.waitForAnyEvent();
+               leftLight();
+               DANGER_LIGHT = (leftLightSamples[0]+DANGER_LIGHT)/2.0f;
+               LCDPrinter.print("Light limit: " + Float.toString(DANGER_LIGHT));
+               
+               Delay.msDelay(350);             
+               LCDPrinter.print("Place back ultra safe");
+               Button.waitForAnyEvent();
+               backDistance();
+               DANGER_DISTANCE_BACK = ultraSamples[0] + 0.05f;
+               LCDPrinter.print("Back ultra limit: " + Float.toString(DANGER_DISTANCE_BACK));
+
+               Delay.msDelay(350);
+               LCDPrinter.print("Place front ultra in danger");
+               Button.waitForAnyEvent();
+               DANGER_DISTANCE_FRONT = frontUltra;
+               LCDPrinter.print("Calibration done");
+               LCDPrinter.print("Front ultra limit: " + Float.toString(DANGER_DISTANCE_FRONT));
+       }
+       
        //Local sensors
        public boolean backDistance(){
                if(System.currentTimeMillis()-ultraTime>DELAY){