4 import java
.io
.FileOutputStream
;
5 import java
.io
.IOException
;
6 import java
.io
.InputStream
;
7 import java
.util
.LinkedList
;
8 import java
.util
.Random
;
10 import lejos
.hardware
.Sound
;
11 import lejos
.hardware
.ev3
.EV3
;
12 import lejos
.hardware
.ev3
.LocalEV3
;
13 import lejos
.hardware
.lcd
.Font
;
14 import lejos
.hardware
.lcd
.TextLCD
;
15 import lejos
.hardware
.motor
.EV3LargeRegulatedMotor
;
16 import lejos
.hardware
.motor
.EV3MediumRegulatedMotor
;
17 import lejos
.hardware
.port
.MotorPort
;
18 import lejos
.hardware
.sensor
.EV3ColorSensor
;
19 import lejos
.hardware
.sensor
.EV3GyroSensor
;
20 import lejos
.hardware
.sensor
.EV3TouchSensor
;
21 import lejos
.hardware
.sensor
.EV3UltrasonicSensor
;
22 import lejos
.hardware
.sensor
.NXTLightSensor
;
23 import lejos
.robotics
.RegulatedMotor
;
24 import lejos
.robotics
.SampleProvider
;
25 import nl
.ru
.des
.sensors
.BTController
;
26 import nl
.ru
.des
.sensors
.RemoteSensors
;
27 import nl
.ru
.des
.sensors
.SensorCollector
;
29 public class Marster
{
30 public static Arbitrator arb
;
31 public static Random random
;
33 @SuppressWarnings("resource")
34 public static void main(String
[] args
) {
35 EV3 brick
= LocalEV3
.get();
36 TextLCD tlcd
= brick
.getTextLCD(Font
.getSmallFont());
37 LCDPrinter
.startLCDPrinter(tlcd
);
38 System
.setOut(LCDPrinter
.getPrefixedPrintstream("out: ", tlcd
));
39 System
.setErr(LCDPrinter
.getPrefixedPrintstream("err: ", tlcd
));
41 LCDPrinter
.print("Loading keylistener...");
42 brick
.getKey("Escape").addKeyListener(new ButtonListener());
44 if(brick
.getName().equalsIgnoreCase("Rover6") || brick
.getName().equalsIgnoreCase("Rover8")){
45 LCDPrinter
.print("Starting as a slave...");
46 LCDPrinter
.print("My name is " + brick
.getName());
47 LCDPrinter
.print("Loading touch sensors...");
48 SampleProvider leftTouch
= new EV3TouchSensor(brick
.getPort("S1")).getTouchMode();
49 SampleProvider rightTouch
= new EV3TouchSensor(brick
.getPort("S2")).getTouchMode();
51 LCDPrinter
.print("Loading ultrasone sensor...");
52 SampleProvider frontUltra
= new EV3UltrasonicSensor(brick
.getPort("S3")).getDistanceMode();
54 LCDPrinter
.print("Loading color sensors...");
55 SampleProvider color
= new EV3ColorSensor(brick
.getPort("S4")).getColorIDMode();
56 RemoteSensors rs
= new RemoteSensors(leftTouch
, rightTouch
, frontUltra
, color
);
58 BTController
.startSlave();
59 rs
.start(BTController
.buf
);
62 InputStream inp
= Marster
.class.getResourceAsStream("nl/ru/des/sound/rick.wav");
63 FileOutputStream out
= new FileOutputStream("rick.wav");
64 byte buffer
[] = new byte[2048];
65 while(inp
.read(buffer
)>0){
70 } catch (IOException e
) {
73 String slave
= brick
.getName().equalsIgnoreCase("Rover5") ?
"Rover6" : "Rover8";
74 LCDPrinter
.print("Starting as as master...");
75 LCDPrinter
.print("My name is " + brick
.getName());
76 LCDPrinter
.print("Going to connect to: " + slave
);
77 LCDPrinter
.print("Loading motors...");
78 RegulatedMotor rightMotor
= new EV3LargeRegulatedMotor(MotorPort
.A
);
79 RegulatedMotor leftMotor
= new EV3LargeRegulatedMotor(MotorPort
.B
);
80 RegulatedMotor measMotor
= new EV3MediumRegulatedMotor(MotorPort
.C
);
81 leftMotor
.setSpeed(Constants
.speed
);
82 rightMotor
.setSpeed(Constants
.speed
);
83 measMotor
.setSpeed(50);
84 rightMotor
.setAcceleration(Constants
.acceleration
);
85 leftMotor
.setAcceleration(Constants
.acceleration
);
86 measMotor
.setAcceleration(100);
88 LCDPrinter
.print("Loading touch sensors...");
89 SampleProvider leftLight
= new NXTLightSensor(brick
.getPort("S1")).getRedMode();
90 SampleProvider rightLight
= new NXTLightSensor(brick
.getPort("S2")).getRedMode();
92 LCDPrinter
.print("Loading ultrasone sensor...");
93 SampleProvider backUltra
= new EV3UltrasonicSensor(brick
.getPort("S3")).getDistanceMode();
95 LCDPrinter
.print("Loading gyro sensor...");
96 SensorCollector sc
= new SensorCollector(backUltra
, leftLight
, rightLight
, new EV3GyroSensor(brick
.getPort("S4")));
98 BTController
.startMaster(slave
, sc
);
99 LCDPrinter
.print("Finished loading");
100 LinkedList
<Mission
> missions
= Missions
.getMissions(sc
, rightMotor
, leftMotor
, measMotor
);
101 random
= new Random();
102 for(Mission m
: missions
){
103 LCDPrinter
.print("Start " + m
.name
+ " mission...");
104 arb
= new Arbitrator(m
.behaviours
);
107 LCDPrinter
.print(m
.name
+ " finished!!1one!");
109 Sound
.playSample(new File("rick.wav"));