1 package nl
.ru
.des
.sensors
;
3 import java
.util
.Queue
;
5 import lejos
.robotics
.SampleProvider
;
6 import nl
.ru
.des
.LCDPrinter
;
8 public class RemoteSensors
{
9 public static final int DELAY
= 250;
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();
31 LCDPrinter
.print("Start sending values...");
33 if(System
.currentTimeMillis()-last
> DELAY
&& q
.size()<5){
34 last
= System
.currentTimeMillis();
35 left
.fetchSample(leftSamples
, 0);
36 if(leftSamples
[0] != leftLatest
){
37 leftLatest
= leftSamples
[0];
38 q
.add(Integer
.toString(RemoteSensorEnum
.LEFT
.ordinal())+Integer
.toString((int)leftLatest
)+"\n");
40 right
.fetchSample(rightSamples
, 0);
41 if(rightSamples
[0] != rightLatest
){
42 rightLatest
= rightSamples
[0];
43 q
.add(Integer
.toString(RemoteSensorEnum
.RIGHT
.ordinal())+Integer
.toString((int)rightLatest
)+"\n");
46 ultra
.fetchSample(ultraSamples
, 0);
47 if(ultraSamples
[0] != ultraLatest
){
48 ultraLatest
= ultraSamples
[0];
49 q
.add(Integer
.toString(RemoteSensorEnum
.ULTRA
.ordinal())+Float
.toString(ultraLatest
)+"\n");
52 color
.fetchSample(colorSamples
, 0);
53 if(colorSamples
[0] != colorLatest
){
54 colorLatest
= colorSamples
[0];
55 q
.add(Integer
.toString(RemoteSensorEnum
.COLOR
.ordinal())+Integer
.toString((int)colorLatest
)+"\n");