package nl.ru.des;
-import lejos.hardware.Button;
+import java.io.File;
+import java.io.PrintStream;
+import java.util.LinkedList;
+import java.util.Random;
+
+import lejos.hardware.Sound;
import lejos.hardware.ev3.EV3;
import lejos.hardware.ev3.LocalEV3;
import lejos.hardware.lcd.Font;
-import lejos.hardware.lcd.TextLCD;
+import lejos.hardware.lcd.LCDOutputStream;
import lejos.hardware.motor.EV3LargeRegulatedMotor;
+import lejos.hardware.motor.EV3MediumRegulatedMotor;
import lejos.hardware.port.MotorPort;
import lejos.hardware.sensor.EV3ColorSensor;
import lejos.hardware.sensor.EV3GyroSensor;
import lejos.hardware.sensor.EV3TouchSensor;
import lejos.hardware.sensor.EV3UltrasonicSensor;
import lejos.hardware.sensor.NXTLightSensor;
+import lejos.robotics.RegulatedMotor;
import lejos.robotics.SampleProvider;
-import lejos.robotics.subsumption.Arbitrator;
+import lejos.utility.Delay;
import nl.ru.des.sensors.BTController;
import nl.ru.des.sensors.RemoteSensors;
import nl.ru.des.sensors.SensorCollector;
public class Marster {
public static Arbitrator arb;
+ public static Random random;
+
+ public static void playPacman(){
+ int whole = 2000;
+ Sound.playNote(Sound.PIANO, 494, whole/16);// b4
+ Sound.playNote(Sound.PIANO, 988, whole/16);// b5
+ Sound.playNote(Sound.PIANO, 740, whole/16);// f#5
+ Sound.playNote(Sound.PIANO, 622, whole/16);// eb5
+ Sound.playNote(Sound.PIANO, 988, whole/32);// b5
+ Sound.playNote(Sound.PIANO, 740, whole/16+whole/32);// f#5
+ Sound.playNote(Sound.PIANO, 622, whole/8);// eb5
+
+ Sound.playNote(Sound.PIANO, 523, whole/16);// c5
+ Sound.playNote(Sound.PIANO, 1047, whole/16);// c6
+ Sound.playNote(Sound.PIANO, 784, whole/16);// g5
+ Sound.playNote(Sound.PIANO, 659, whole/16);// e5
+ Sound.playNote(Sound.PIANO, 1047, whole/32);// c6
+ Sound.playNote(Sound.PIANO, 784, whole/16+whole/32);// g5
+ Sound.playNote(Sound.PIANO, 659, whole/8);// e5
+
+ Sound.playNote(Sound.PIANO, 494, whole/16);// b4
+ Sound.playNote(Sound.PIANO, 988, whole/16);// b5
+ Sound.playNote(Sound.PIANO, 740, whole/16);// f#5
+ Sound.playNote(Sound.PIANO, 622, whole/16);// eb5
+ Sound.playNote(Sound.PIANO, 988, whole/32);// b5
+ Sound.playNote(Sound.PIANO, 740, whole/16+whole/32);// f#5
+ Sound.playNote(Sound.PIANO, 622, whole/8);// eb5
+
+ Sound.playNote(Sound.PIANO, 622, whole/32);// eb5
+ Sound.playNote(Sound.PIANO, 659, whole/32);// e5
+ Sound.playNote(Sound.PIANO, 698, whole/16);// f5
+ Sound.playNote(Sound.PIANO, 698, whole/32);// f5
+ Sound.playNote(Sound.PIANO, 740, whole/32);// f#5
+ Sound.playNote(Sound.PIANO, 784, whole/16);// g5
+ Sound.playNote(Sound.PIANO, 784, whole/32);// g5
+ Sound.playNote(Sound.PIANO, 831, whole/32);// ab5
+ Sound.playNote(Sound.PIANO, 880, whole/16);// a5
+ Sound.playNote(Sound.PIANO, 988, whole/8);// b5
+ }
@SuppressWarnings("resource")
public static void main(String[] args) {
EV3 brick = LocalEV3.get();
- TextLCD tlcd = brick.getTextLCD(Font.getSmallFont());
- LCDPrinter.startLCDPrinter(tlcd);
- System.setOut(LCDPrinter.getPrefixedPrintstream("out: ", tlcd));
- System.setErr(LCDPrinter.getPrefixedPrintstream("err: ", tlcd));
+ PrintStream lcd = new PrintStream(new LCDOutputStream(brick.getTextLCD(Font.getSmallFont())));
+ System.setOut(lcd);
+ System.setErr(lcd);
- LCDPrinter.print("Loading keylistener...");
+ System.out.println("Loading keylistener...");
brick.getKey("Escape").addKeyListener(new ButtonListener());
-
if(brick.getName().equalsIgnoreCase("Rover6") || brick.getName().equalsIgnoreCase("Rover8")){
- LCDPrinter.print("Starting as a slave...");
- LCDPrinter.print("Loading touch sensors...");
+ System.out.println("Starting as a slave...");
+ System.out.println("My name is " + brick.getName());
+ System.out.println("Loading touch sensors...");
SampleProvider leftTouch = new EV3TouchSensor(brick.getPort("S1")).getTouchMode();
SampleProvider rightTouch = new EV3TouchSensor(brick.getPort("S2")).getTouchMode();
- LCDPrinter.print("Loading ultrasone sensor...");
+ System.out.println("Loading ultrasone sensor...");
SampleProvider frontUltra = new EV3UltrasonicSensor(brick.getPort("S3")).getDistanceMode();
- LCDPrinter.print("Loading color sensors...");
+ System.out.println("Loading color sensors...");
SampleProvider color = new EV3ColorSensor(brick.getPort("S4")).getColorIDMode();
RemoteSensors rs = new RemoteSensors(leftTouch, rightTouch, frontUltra, color);
- LCDPrinter.print("Start BT... Press any key to commence");
- Button.waitForAnyEvent();
BTController.startSlave();
- rs.start(BTController.buf);
+ try {
+ rs.start(BTController.buf);
+ } catch (Exception e){
+ System.exit(0);
+ }
} else {
- LCDPrinter.print("Starting as as master...");
- LCDPrinter.print("Loading motors...");
- EV3LargeRegulatedMotor rightMotor = new EV3LargeRegulatedMotor(MotorPort.A);
- EV3LargeRegulatedMotor leftMotor = new EV3LargeRegulatedMotor(MotorPort.B);
- EV3LargeRegulatedMotor measMotor = new EV3LargeRegulatedMotor(MotorPort.C);
-// leftMotor.setSpeed(Constants.speed);
-// rightMotor.setSpeed(Constants.speed);
-// measMotor.setSpeed(100);
-// rightMotor.setAcceleration(Constants.acceleration);
-// leftMotor.setAcceleration(Constants.acceleration);
-// measMotor.setAcceleration(100);
-
- LCDPrinter.print("Loading touch sensors...");
+ String slave = brick.getName().equalsIgnoreCase("Rover5") ? "Rover6" : "Rover8";
+ System.out.println("Starting as as master...");
+ System.out.println("My name is " + brick.getName());
+ System.out.println("Going to connect to: " + slave);
+ System.out.println("Loading motors...");
+ RegulatedMotor rightMotor = new EV3LargeRegulatedMotor(MotorPort.A);
+ RegulatedMotor leftMotor = new EV3LargeRegulatedMotor(MotorPort.B);
+ RegulatedMotor measMotor = new EV3MediumRegulatedMotor(MotorPort.C);
+ leftMotor.setSpeed(Constants.speed);
+ rightMotor.setSpeed(Constants.speed);
+ measMotor.setSpeed(50);
+ rightMotor.setAcceleration(Constants.acceleration);
+ leftMotor.setAcceleration(Constants.acceleration);
+ measMotor.setAcceleration(50);
+
+ System.out.println("Loading touch sensors...");
SampleProvider leftLight = new NXTLightSensor(brick.getPort("S1")).getRedMode();
SampleProvider rightLight = new NXTLightSensor(brick.getPort("S2")).getRedMode();
- LCDPrinter.print("Loading ultrasone sensor...");
+ System.out.println("Loading ultrasone sensor...");
SampleProvider backUltra = new EV3UltrasonicSensor(brick.getPort("S3")).getDistanceMode();
- LCDPrinter.print("Loading gyro sensor...");
- SampleProvider gyro = new EV3GyroSensor(brick.getPort("S4")).getAngleAndRateMode();
+ System.out.println("Loading gyro sensor...");
+ SensorCollector sc = new SensorCollector(backUltra, leftLight, rightLight, new EV3GyroSensor(brick.getPort("S4")));
- LCDPrinter.print("Start BT... Press any key to commence");
- Button.waitForAnyEvent();
- BTController.startMaster(brick.getName() == "Rover5" ? "Rover6" : "Rover8", new SensorCollector(backUltra, leftLight, rightLight, gyro));
- LCDPrinter.print("Finished loading");
- Button.waitForAnyPress();
-// Arbitrator a;
-// LinkedList<Mission> missions = Missions.getMissions(sensors, rightMotor, leftMotor, colorMemory);
-// for(Mission m : missions){
-// LCDPrinter.print("Start " + m.name + " mission...");
-// a = new Arbitrator(m.behaviours);
-// a.start();
-// }
+ BTController.startMaster(slave, sc);
+ System.out.println("Finished loading");
+ sc.calibrate();
+ LinkedList<Mission> missions = Missions.getMissions(sc, rightMotor, leftMotor, measMotor);
+ random = new Random();
+ Delay.msDelay(2000);
+ playPacman();
+ for(Mission m : missions){
+ System.out.println("Start " + m.name + " mission...");
+ arb = new Arbitrator(m.behaviours);
+ sc.reset();
+ arb.start();
+ Sound.buzz();
+ Delay.msDelay(5000);
+ System.out.println(m.name + " finished!!1one!");
+ }
+ Sound.playSample(new File("rick.wav"), Sound.VOL_MAX);
+ Delay.msDelay(10000);
+ System.exit(0);
}
}
}
\ No newline at end of file