1 package nl
.ru
.des
.sensors
;
3 import lejos
.robotics
.SampleProvider
;
4 import nl
.ru
.des
.LCDPrinter
;
6 public class SensorCollector
implements MessageHandler
{
7 public static final int DELAY
= 300;
10 private SampleProvider ultra
, leftLight
, rightLight
, gyro
;
11 private float[] ultraSamples
, leftLightSamples
, rightLightSamples
, gyroSamples
;
12 private long ultraTime
, leftLightTime
, rightLightTime
, gyroTime
;
16 private boolean leftTouch
, rightTouch
;
17 private float frontUltra
;
19 public SensorCollector(SampleProvider ultra
,
20 SampleProvider leftLight
,
21 SampleProvider rightLight
,
24 this.leftLight
= leftLight
;
25 this.rightLight
= rightLight
;
27 ultraSamples
= new float[ultra
.sampleSize()];
28 gyroSamples
= new float[gyro
.sampleSize()];
29 leftLightSamples
= new float[leftLight
.sampleSize()];
30 rightLightSamples
= new float[rightLight
.sampleSize()];
31 ultraTime
= System
.currentTimeMillis();
32 leftLightTime
= System
.currentTimeMillis();
33 rightLightTime
= System
.currentTimeMillis();
34 gyroTime
= System
.currentTimeMillis();
38 public float backDistance(){
39 if(System
.currentTimeMillis()-ultraTime
>DELAY
){
40 ultra
.fetchSample(ultraSamples
, 0);
41 ultraTime
= System
.currentTimeMillis();
43 return ultraSamples
[0];
46 public boolean leftLight(){
47 if(System
.currentTimeMillis()-leftLightTime
>DELAY
){
48 leftLight
.fetchSample(leftLightSamples
, 0);
49 leftLightTime
= System
.currentTimeMillis();
51 return leftLightSamples
[0]>0.5;
54 public boolean rightLight(){
55 if(System
.currentTimeMillis()-rightLightTime
>DELAY
){
56 rightLight
.fetchSample(rightLightSamples
, 0);
57 rightLightTime
= System
.currentTimeMillis();
59 return rightLightSamples
[0]>0.5;
63 if(System
.currentTimeMillis()-gyroTime
>DELAY
){
64 gyro
.fetchSample(gyroSamples
, 0);
65 gyroTime
= System
.currentTimeMillis();
67 return gyroSamples
[0];
75 public boolean leftTouch(){
79 public boolean rightTouch(){
83 public float frontDistance(){
88 public void handleMessage(String m
) {
89 LCDPrinter
.print("Sensor: " + Character
.toString(m
.charAt(0)) + " with value: " + m
.substring(1));
90 String s
= m
.substring(1);
91 switch(RemoteSensors
.RemoteSensorEnum
.values()[Integer
.valueOf(Character
.toString(m
.charAt(0)))]){
93 color
= Integer
.valueOf(s
);
96 leftTouch
= Integer
.valueOf(s
)==1;
99 rightTouch
= Integer
.valueOf(s
)==1;
102 frontUltra
= Float
.valueOf(s
);