4 import java
.io
.PrintStream
;
5 import java
.util
.LinkedList
;
6 import java
.util
.Random
;
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 lejos
.utility
.Delay
;
24 import nl
.ru
.des
.sensors
.BTController
;
25 import nl
.ru
.des
.sensors
.RemoteSensors
;
26 import nl
.ru
.des
.sensors
.SensorCollector
;
28 public class Marster
{
29 public static Arbitrator arb
;
30 public static Random random
;
32 public static void playPacman(){
34 Sound
.playNote(Sound
.PIANO
, 494, whole
/16);// b4
35 Sound
.playNote(Sound
.PIANO
, 988, whole
/16);// b5
36 Sound
.playNote(Sound
.PIANO
, 740, whole
/16);// f#5
37 Sound
.playNote(Sound
.PIANO
, 622, whole
/16);// eb5
38 Sound
.playNote(Sound
.PIANO
, 988, whole
/32);// b5
39 Sound
.playNote(Sound
.PIANO
, 740, whole
/16+whole
/32);// f#5
40 Sound
.playNote(Sound
.PIANO
, 622, whole
/8);// eb5
42 Sound
.playNote(Sound
.PIANO
, 523, whole
/16);// c5
43 Sound
.playNote(Sound
.PIANO
, 1047, whole
/16);// c6
44 Sound
.playNote(Sound
.PIANO
, 784, whole
/16);// g5
45 Sound
.playNote(Sound
.PIANO
, 659, whole
/16);// e5
46 Sound
.playNote(Sound
.PIANO
, 1047, whole
/32);// c6
47 Sound
.playNote(Sound
.PIANO
, 784, whole
/16+whole
/32);// g5
48 Sound
.playNote(Sound
.PIANO
, 659, whole
/8);// e5
50 Sound
.playNote(Sound
.PIANO
, 494, whole
/16);// b4
51 Sound
.playNote(Sound
.PIANO
, 988, whole
/16);// b5
52 Sound
.playNote(Sound
.PIANO
, 740, whole
/16);// f#5
53 Sound
.playNote(Sound
.PIANO
, 622, whole
/16);// eb5
54 Sound
.playNote(Sound
.PIANO
, 988, whole
/32);// b5
55 Sound
.playNote(Sound
.PIANO
, 740, whole
/16+whole
/32);// f#5
56 Sound
.playNote(Sound
.PIANO
, 622, whole
/8);// eb5
58 Sound
.playNote(Sound
.PIANO
, 622, whole
/32);// eb5
59 Sound
.playNote(Sound
.PIANO
, 659, whole
/32);// e5
60 Sound
.playNote(Sound
.PIANO
, 698, whole
/16);// f5
61 Sound
.playNote(Sound
.PIANO
, 698, whole
/32);// f5
62 Sound
.playNote(Sound
.PIANO
, 740, whole
/32);// f#5
63 Sound
.playNote(Sound
.PIANO
, 784, whole
/16);// g5
64 Sound
.playNote(Sound
.PIANO
, 784, whole
/32);// g5
65 Sound
.playNote(Sound
.PIANO
, 831, whole
/32);// ab5
66 Sound
.playNote(Sound
.PIANO
, 880, whole
/16);// a5
67 Sound
.playNote(Sound
.PIANO
, 988, whole
/8);// b5
70 @SuppressWarnings("resource")
71 public static void main(String
[] args
) {
72 EV3 brick
= LocalEV3
.get();
73 PrintStream lcd
= new PrintStream(new LCDOutputStream(brick
.getTextLCD(Font
.getSmallFont())));
77 System
.out
.println("Loading keylistener...");
78 brick
.getKey("Escape").addKeyListener(new ButtonListener());
79 if(brick
.getName().equalsIgnoreCase("Rover6") || brick
.getName().equalsIgnoreCase("Rover8")){
80 System
.out
.println("Starting as a slave...");
81 System
.out
.println("My name is " + brick
.getName());
82 System
.out
.println("Loading touch sensors...");
83 SampleProvider leftTouch
= new EV3TouchSensor(brick
.getPort("S1")).getTouchMode();
84 SampleProvider rightTouch
= new EV3TouchSensor(brick
.getPort("S2")).getTouchMode();
86 System
.out
.println("Loading ultrasone sensor...");
87 SampleProvider frontUltra
= new EV3UltrasonicSensor(brick
.getPort("S3")).getDistanceMode();
89 System
.out
.println("Loading color sensors...");
90 SampleProvider color
= new EV3ColorSensor(brick
.getPort("S4")).getColorIDMode();
91 RemoteSensors rs
= new RemoteSensors(leftTouch
, rightTouch
, frontUltra
, color
);
93 BTController
.startSlave();
95 rs
.start(BTController
.buf
);
96 } catch (Exception e
){
100 String slave
= brick
.getName().equalsIgnoreCase("Rover5") ?
"Rover6" : "Rover8";
101 System
.out
.println("Starting as as master...");
102 System
.out
.println("My name is " + brick
.getName());
103 System
.out
.println("Going to connect to: " + slave
);
104 System
.out
.println("Loading motors...");
105 RegulatedMotor rightMotor
= new EV3LargeRegulatedMotor(MotorPort
.A
);
106 RegulatedMotor leftMotor
= new EV3LargeRegulatedMotor(MotorPort
.B
);
107 RegulatedMotor measMotor
= new EV3MediumRegulatedMotor(MotorPort
.C
);
108 leftMotor
.setSpeed(Constants
.speed
);
109 rightMotor
.setSpeed(Constants
.speed
);
110 measMotor
.setSpeed(50);
111 rightMotor
.setAcceleration(Constants
.acceleration
);
112 leftMotor
.setAcceleration(Constants
.acceleration
);
113 measMotor
.setAcceleration(50);
115 System
.out
.println("Loading touch sensors...");
116 SampleProvider leftLight
= new NXTLightSensor(brick
.getPort("S1")).getRedMode();
117 SampleProvider rightLight
= new NXTLightSensor(brick
.getPort("S2")).getRedMode();
119 System
.out
.println("Loading ultrasone sensor...");
120 SampleProvider backUltra
= new EV3UltrasonicSensor(brick
.getPort("S3")).getDistanceMode();
122 System
.out
.println("Loading gyro sensor...");
123 SensorCollector sc
= new SensorCollector(backUltra
, leftLight
, rightLight
, new EV3GyroSensor(brick
.getPort("S4")));
125 BTController
.startMaster(slave
, sc
);
126 System
.out
.println("Finished loading");
128 LinkedList
<Mission
> missions
= Missions
.getMissions(sc
, rightMotor
, leftMotor
, measMotor
);
129 random
= new Random();
132 for(Mission m
: missions
){
133 System
.out
.println("Start " + m
.name
+ " mission...");
134 arb
= new Arbitrator(m
.behaviours
);
139 System
.out
.println(m
.name
+ " finished!!1one!");
141 Sound
.playSample(new File("rick.wav"), Sound
.VOL_MAX
);
142 Delay
.msDelay(10000);