3 import java
.util
.LinkedList
;
4 import java
.util
.Random
;
6 import lejos
.hardware
.ev3
.EV3
;
7 import lejos
.hardware
.ev3
.LocalEV3
;
8 import lejos
.hardware
.lcd
.Font
;
9 import lejos
.hardware
.lcd
.TextLCD
;
10 import lejos
.hardware
.motor
.EV3LargeRegulatedMotor
;
11 import lejos
.hardware
.motor
.EV3MediumRegulatedMotor
;
12 import lejos
.hardware
.port
.MotorPort
;
13 import lejos
.hardware
.sensor
.EV3ColorSensor
;
14 import lejos
.hardware
.sensor
.EV3GyroSensor
;
15 import lejos
.hardware
.sensor
.EV3TouchSensor
;
16 import lejos
.hardware
.sensor
.EV3UltrasonicSensor
;
17 import lejos
.hardware
.sensor
.NXTLightSensor
;
18 import lejos
.robotics
.RegulatedMotor
;
19 import lejos
.robotics
.SampleProvider
;
20 import nl
.ru
.des
.sensors
.BTController
;
21 import nl
.ru
.des
.sensors
.RemoteSensors
;
22 import nl
.ru
.des
.sensors
.SensorCollector
;
24 public class Marster
{
25 public static Arbitrator arb
;
26 public static Random random
;
28 @SuppressWarnings("resource")
29 public static void main(String
[] args
) {
30 EV3 brick
= LocalEV3
.get();
31 TextLCD tlcd
= brick
.getTextLCD(Font
.getSmallFont());
32 LCDPrinter
.startLCDPrinter(tlcd
);
33 System
.setOut(LCDPrinter
.getPrefixedPrintstream("out: ", tlcd
));
34 System
.setErr(LCDPrinter
.getPrefixedPrintstream("err: ", tlcd
));
36 LCDPrinter
.print("Loading keylistener...");
37 brick
.getKey("Escape").addKeyListener(new ButtonListener());
39 if(brick
.getName().equalsIgnoreCase("Rover6") || brick
.getName().equalsIgnoreCase("Rover8")){
40 LCDPrinter
.print("Starting as a slave...");
41 LCDPrinter
.print("My name is " + brick
.getName());
42 LCDPrinter
.print("Loading touch sensors...");
43 SampleProvider leftTouch
= new EV3TouchSensor(brick
.getPort("S1")).getTouchMode();
44 SampleProvider rightTouch
= new EV3TouchSensor(brick
.getPort("S2")).getTouchMode();
46 LCDPrinter
.print("Loading ultrasone sensor...");
47 SampleProvider frontUltra
= new EV3UltrasonicSensor(brick
.getPort("S3")).getDistanceMode();
49 LCDPrinter
.print("Loading color sensors...");
50 SampleProvider color
= new EV3ColorSensor(brick
.getPort("S4")).getColorIDMode();
51 RemoteSensors rs
= new RemoteSensors(leftTouch
, rightTouch
, frontUltra
, color
);
53 BTController
.startSlave();
54 rs
.start(BTController
.buf
);
56 String slave
= brick
.getName().equalsIgnoreCase("Rover5") ?
"Rover6" : "Rover8";
57 LCDPrinter
.print("Starting as as master...");
58 LCDPrinter
.print("My name is " + brick
.getName());
59 LCDPrinter
.print("Going to connect to: " + slave
);
60 LCDPrinter
.print("Loading motors...");
61 RegulatedMotor rightMotor
= new EV3LargeRegulatedMotor(MotorPort
.A
);
62 RegulatedMotor leftMotor
= new EV3LargeRegulatedMotor(MotorPort
.B
);
63 RegulatedMotor measMotor
= new EV3MediumRegulatedMotor(MotorPort
.C
);
64 leftMotor
.setSpeed(Constants
.speed
);
65 rightMotor
.setSpeed(Constants
.speed
);
66 measMotor
.setSpeed(50);
67 rightMotor
.setAcceleration(Constants
.acceleration
);
68 leftMotor
.setAcceleration(Constants
.acceleration
);
69 measMotor
.setAcceleration(100);
71 LCDPrinter
.print("Loading touch sensors...");
72 SampleProvider leftLight
= new NXTLightSensor(brick
.getPort("S1")).getRedMode();
73 SampleProvider rightLight
= new NXTLightSensor(brick
.getPort("S2")).getRedMode();
75 LCDPrinter
.print("Loading ultrasone sensor...");
76 SampleProvider backUltra
= new EV3UltrasonicSensor(brick
.getPort("S3")).getDistanceMode();
78 LCDPrinter
.print("Loading gyro sensor...");
79 SensorCollector sc
= new SensorCollector(backUltra
, leftLight
, rightLight
, new EV3GyroSensor(brick
.getPort("S4")));
81 BTController
.startMaster(slave
, sc
);
82 LCDPrinter
.print("Finished loading");
83 LinkedList
<Mission
> missions
= Missions
.getMissions(sc
, rightMotor
, leftMotor
, measMotor
);
84 random
= new Random();
85 for(Mission m
: missions
){
86 LCDPrinter
.print("Start " + m
.name
+ " mission...");
87 arb
= new Arbitrator(m
.behaviours
);
90 LCDPrinter
.print(m
.name
+ " finished!!1one!");