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