1 package nl
.ru
.des
.sensors
;
3 import java
.util
.Queue
;
5 import lejos
.robotics
.SampleProvider
;
6 import lejos
.utility
.Delay
;
8 public class RemoteSensors
{
9 public static final int DELAY
= 200;
10 private SampleProvider left
, right
, ultra
, color
;
11 private float[] leftSamples
, rightSamples
, ultraSamples
, colorSamples
;
12 private float leftLatest
, rightLatest
, ultraLatest
, colorLatest
;
14 public enum RemoteSensorEnum
{
15 LEFT
, RIGHT
, ULTRA
, COLOR
;
18 public RemoteSensors(SampleProvider left
, SampleProvider right
, SampleProvider ultra
, SampleProvider color
){
23 leftSamples
= new float[left
.sampleSize()];
24 rightSamples
= new float[right
.sampleSize()];
25 ultraSamples
= new float[ultra
.sampleSize()];
26 colorSamples
= new float[color
.sampleSize()];
29 public void start(Queue
<String
> q
){
30 long last
= System
.currentTimeMillis();
32 System
.out
.println("Start sending values...");
34 if(System
.currentTimeMillis()-last
> DELAY
&& q
.size()<5){
35 last
= System
.currentTimeMillis();
36 left
.fetchSample(leftSamples
, 0);
37 if(leftSamples
[0] != leftLatest
){
38 leftLatest
= leftSamples
[0];
39 q
.add(Integer
.toString(RemoteSensorEnum
.LEFT
.ordinal())+Integer
.toString((int)leftLatest
)+"\n");
41 right
.fetchSample(rightSamples
, 0);
43 if(rightSamples
[0] != rightLatest
){
44 rightLatest
= rightSamples
[0];
45 q
.add(Integer
.toString(RemoteSensorEnum
.RIGHT
.ordinal())+Integer
.toString((int)rightLatest
)+"\n");
47 ultra
.fetchSample(ultraSamples
, 0);
48 if(Math
.abs(ultraSamples
[0] - ultraLatest
) > 0.025){
49 ultraLatest
= ultraSamples
[0];
50 q
.add(Integer
.toString(RemoteSensorEnum
.ULTRA
.ordinal())+Float
.toString(ultraLatest
)+"\n");
53 color
.fetchSample(colorSamples
, 0);
54 if(colorSamples
[0] != colorLatest
){
55 colorLatest
= colorSamples
[0];
56 q
.add(Integer
.toString(RemoteSensorEnum
.COLOR
.ordinal())+Integer
.toString((int)colorLatest
)+"\n");