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;
gyroSamples = new float[gyro.sampleSize()];
leftLightSamples = new float[leftLight.sampleSize()];
rightLightSamples = new float[rightLight.sampleSize()];
+
ultraTime = System.currentTimeMillis();
leftLightTime = System.currentTimeMillis();
rightLightTime = System.currentTimeMillis();
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){