642a5e61d7ac861715a2f499dc60f76d646a2bfa
1 package nl
.ru
.des
.sensors
;
3 import java
.util
.Queue
;
5 import lejos
.robotics
.SampleProvider
;
6 import lejos
.utility
.Delay
;
7 import nl
.ru
.des
.LCDPrinter
;
9 public class RemoteSensors
{
10 public static final int DELAY
= 200;
11 private SampleProvider left
, right
, ultra
, color
;
12 private float[] leftSamples
, rightSamples
, ultraSamples
, colorSamples
;
13 private float leftLatest
, rightLatest
, ultraLatest
, colorLatest
;
15 public enum RemoteSensorEnum
{
16 LEFT
, RIGHT
, ULTRA
, COLOR
;
19 public RemoteSensors(SampleProvider left
, SampleProvider right
, SampleProvider ultra
, SampleProvider color
){
24 leftSamples
= new float[left
.sampleSize()];
25 rightSamples
= new float[right
.sampleSize()];
26 ultraSamples
= new float[ultra
.sampleSize()];
27 colorSamples
= new float[color
.sampleSize()];
30 public void start(Queue
<String
> q
){
31 long last
= System
.currentTimeMillis();
33 LCDPrinter
.print("Start sending values...");
35 if(System
.currentTimeMillis()-last
> DELAY
&& q
.size()<5){
36 last
= System
.currentTimeMillis();
37 left
.fetchSample(leftSamples
, 0);
38 if(leftSamples
[0] != leftLatest
){
39 leftLatest
= leftSamples
[0];
40 q
.add(Integer
.toString(RemoteSensorEnum
.LEFT
.ordinal())+Integer
.toString((int)leftLatest
)+"\n");
42 right
.fetchSample(rightSamples
, 0);
44 if(rightSamples
[0] != rightLatest
){
45 rightLatest
= rightSamples
[0];
46 q
.add(Integer
.toString(RemoteSensorEnum
.RIGHT
.ordinal())+Integer
.toString((int)rightLatest
)+"\n");
48 ultra
.fetchSample(ultraSamples
, 0);
49 if(Math
.abs(ultraSamples
[0] - ultraLatest
) > 0.025){
50 ultraLatest
= ultraSamples
[0];
51 q
.add(Integer
.toString(RemoteSensorEnum
.ULTRA
.ordinal())+Float
.toString(ultraLatest
)+"\n");
54 color
.fetchSample(colorSamples
, 0);
55 if(colorSamples
[0] != colorLatest
){
56 colorLatest
= colorSamples
[0];
57 q
.add(Integer
.toString(RemoteSensorEnum
.COLOR
.ordinal())+Integer
.toString((int)colorLatest
)+"\n");