3 import java
.io
.PrintStream
;
4 import java
.util
.LinkedList
;
5 import java
.util
.Random
;
7 import lejos
.hardware
.Button
;
8 import lejos
.hardware
.Sound
;
9 import lejos
.hardware
.ev3
.EV3
;
10 import lejos
.hardware
.ev3
.LocalEV3
;
11 import lejos
.hardware
.lcd
.Font
;
12 import lejos
.hardware
.lcd
.LCDOutputStream
;
13 import lejos
.hardware
.motor
.EV3LargeRegulatedMotor
;
14 import lejos
.hardware
.motor
.EV3MediumRegulatedMotor
;
15 import lejos
.hardware
.port
.MotorPort
;
16 import lejos
.hardware
.sensor
.EV3ColorSensor
;
17 import lejos
.hardware
.sensor
.EV3GyroSensor
;
18 import lejos
.hardware
.sensor
.EV3TouchSensor
;
19 import lejos
.hardware
.sensor
.EV3UltrasonicSensor
;
20 import lejos
.hardware
.sensor
.NXTLightSensor
;
21 import lejos
.robotics
.RegulatedMotor
;
22 import lejos
.robotics
.SampleProvider
;
23 import nl
.ru
.des
.sensors
.BTController
;
24 import nl
.ru
.des
.sensors
.RemoteSensors
;
25 import nl
.ru
.des
.sensors
.SensorCollector
;
27 public class Marster
{
28 public static Arbitrator arb
;
29 public static Random random
;
31 @SuppressWarnings("resource")
32 public static void main(String
[] args
) {
33 EV3 brick
= LocalEV3
.get();
34 PrintStream lcd
= new PrintStream(new LCDOutputStream(brick
.getTextLCD(Font
.getSmallFont())));
38 System
.out
.println("Loading keylistener...");
39 brick
.getKey("Escape").addKeyListener(new ButtonListener());
41 if(brick
.getName().equalsIgnoreCase("Rover6") || brick
.getName().equalsIgnoreCase("Rover8")){
42 System
.out
.println("Starting as a slave...");
43 System
.out
.println("My name is " + brick
.getName());
44 System
.out
.println("Loading touch sensors...");
45 SampleProvider leftTouch
= new EV3TouchSensor(brick
.getPort("S1")).getTouchMode();
46 SampleProvider rightTouch
= new EV3TouchSensor(brick
.getPort("S2")).getTouchMode();
48 System
.out
.println("Loading ultrasone sensor...");
49 SampleProvider frontUltra
= new EV3UltrasonicSensor(brick
.getPort("S3")).getDistanceMode();
51 System
.out
.println("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 System
.out
.println("Starting as as master...");
64 System
.out
.println("My name is " + brick
.getName());
65 System
.out
.println("Going to connect to: " + slave
);
66 System
.out
.println("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(50);
77 System
.out
.println("Loading touch sensors...");
78 SampleProvider leftLight
= new NXTLightSensor(brick
.getPort("S1")).getRedMode();
79 SampleProvider rightLight
= new NXTLightSensor(brick
.getPort("S2")).getRedMode();
81 System
.out
.println("Loading ultrasone sensor...");
82 SampleProvider backUltra
= new EV3UltrasonicSensor(brick
.getPort("S3")).getDistanceMode();
84 System
.out
.println("Loading gyro sensor...");
85 SensorCollector sc
= new SensorCollector(backUltra
, leftLight
, rightLight
, new EV3GyroSensor(brick
.getPort("S4")));
87 BTController
.startMaster(slave
, sc
);
88 System
.out
.println("Finished loading");
90 LinkedList
<Mission
> missions
= Missions
.getMissions(sc
, rightMotor
, leftMotor
, measMotor
);
91 random
= new Random();
92 System
.out
.println("Press any button to start");
93 Button
.waitForAnyEvent();
94 for(Mission m
: missions
){
95 System
.out
.println("Start " + m
.name
+ " mission...");
96 arb
= new Arbitrator(m
.behaviours
);
100 System
.out
.println(m
.name
+ " finished!!1one!");