3 import lejos
.robotics
.SampleProvider
;
5 public class SensorCollector
{
6 public static final int DELAY
= 50;
8 private SampleProvider ultrasone
, color
, leftTouch
, rightTouch
;
9 private float[] ultrasoneSamples
, colorSamples
, leftTouchSamples
, rightTouchSamples
;
10 private long ultrasoneTime
, colorTime
, leftTouchTime
, rightTouchTime
;
12 public SensorCollector(SampleProvider ultrasone
,
14 SampleProvider leftTouch
,
15 SampleProvider rightTouch
){
16 this.ultrasone
= ultrasone
;
18 this.leftTouch
= leftTouch
;
19 this.rightTouch
= rightTouch
;
20 ultrasoneSamples
= new float[ultrasone
.sampleSize()];
21 colorSamples
= new float[color
.sampleSize()];
22 leftTouchSamples
= new float[leftTouch
.sampleSize()];
23 rightTouchSamples
= new float[rightTouch
.sampleSize()];
24 ultrasoneTime
= System
.currentTimeMillis();
25 colorTime
= System
.currentTimeMillis();
26 leftTouchTime
= System
.currentTimeMillis();
27 rightTouchTime
= System
.currentTimeMillis();
30 public float distance(){
31 if(System
.currentTimeMillis()-ultrasoneTime
>DELAY
){
32 ultrasone
.fetchSample(ultrasoneSamples
, 0);
33 ultrasoneTime
= System
.currentTimeMillis();
35 return ultrasoneSamples
[0];
39 if(System
.currentTimeMillis()-colorTime
>DELAY
){
40 color
.fetchSample(colorSamples
, 0);
41 colorTime
= System
.currentTimeMillis();
43 return (int)colorSamples
[0];
46 public boolean leftTouch(){
47 if(System
.currentTimeMillis()-leftTouchTime
>DELAY
){
48 leftTouch
.fetchSample(leftTouchSamples
, 0);
49 leftTouchTime
= System
.currentTimeMillis();
51 return leftTouchSamples
[0]==1;
54 public boolean rightTouch(){
55 if(System
.currentTimeMillis()-rightTouchTime
>DELAY
){
56 rightTouch
.fetchSample(rightTouchSamples
, 0);
57 rightTouchTime
= System
.currentTimeMillis();
59 return rightTouchSamples
[0]==1;