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