package nl.ru.des;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
import lejos.robotics.SampleProvider;
public class SensorCollector{
- public static final int DELAY = 50;
+ public static final int DELAY = 100;
- private SampleProvider ultrasone, color, leftTouch, rightTouch;
+ private SampleProvider ultrasone, leftTouch, rightTouch;
private float[] ultrasoneSamples, colorSamples, leftTouchSamples, rightTouchSamples;
- private long ultrasoneTime, colorTime, leftTouchTime, rightTouchTime;
+ private long ultrasoneTime, leftTouchTime, rightTouchTime;
+ private Set<Integer> colorsCollected;
public SensorCollector(SampleProvider ultrasone,
- SampleProvider color,
+ final SampleProvider color,
SampleProvider leftTouch,
SampleProvider rightTouch){
this.ultrasone = ultrasone;
- this.color = color;
this.leftTouch = leftTouch;
this.rightTouch = rightTouch;
ultrasoneSamples = new float[ultrasone.sampleSize()];
leftTouchSamples = new float[leftTouch.sampleSize()];
rightTouchSamples = new float[rightTouch.sampleSize()];
ultrasoneTime = System.currentTimeMillis();
- colorTime = System.currentTimeMillis();
leftTouchTime = System.currentTimeMillis();
rightTouchTime = System.currentTimeMillis();
+ colorsCollected = new HashSet<Integer>();
+ new Thread(){
+ @Override public void run(){
+ long time = System.currentTimeMillis();
+ while(true){
+ if(System.currentTimeMillis() - time > DELAY){
+ color.fetchSample(colorSamples, 0);
+ colorsCollected.add(color());
+ time = System.currentTimeMillis();
+ }
+ Thread.yield();
+ }
+ }
+ }.start();
}
public float distance(){
}
public int color(){
- if(System.currentTimeMillis()-colorTime>DELAY){
- color.fetchSample(colorSamples, 0);
- colorTime = System.currentTimeMillis();
- }
return (int)colorSamples[0];
}
}
return rightTouchSamples[0]==1;
}
+
+ public boolean collected(int[] is) {
+ return colorsCollected.containsAll(Arrays.asList(is));
+ }
}
\ No newline at end of file