package nl.ru.des;
-import java.util.Queue;
+import java.util.LinkedList;
+import java.util.Random;
-import lejos.hardware.Button;
import lejos.hardware.ev3.EV3;
import lejos.hardware.ev3.LocalEV3;
import lejos.hardware.lcd.Font;
import lejos.hardware.lcd.TextLCD;
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 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;
@SuppressWarnings("resource")
public static void main(String[] args) {
if(brick.getName().equalsIgnoreCase("Rover6") || brick.getName().equalsIgnoreCase("Rover8")){
LCDPrinter.print("Starting as a slave...");
+ LCDPrinter.print("My name is " + brick.getName());
LCDPrinter.print("Loading touch sensors...");
SampleProvider leftTouch = new EV3TouchSensor(brick.getPort("S1")).getTouchMode();
SampleProvider rightTouch = new EV3TouchSensor(brick.getPort("S2")).getTouchMode();
SampleProvider color = new EV3ColorSensor(brick.getPort("S4")).getColorIDMode();
RemoteSensors rs = new RemoteSensors(leftTouch, rightTouch, frontUltra, color);
- LCDPrinter.print("Start BT...");
- Queue<String> msgs = BTController.startSlave();
- rs.start(msgs);
+ BTController.startSlave();
+ rs.start(BTController.buf);
} else {
+ String slave = brick.getName().equalsIgnoreCase("Rover5") ? "Rover6" : "Rover8";
LCDPrinter.print("Starting as as master...");
+ LCDPrinter.print("My name is " + brick.getName());
+ LCDPrinter.print("Going to connect to: " + slave);
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);
-
+ 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(100);
+
LCDPrinter.print("Loading touch sensors...");
SampleProvider leftLight = new NXTLightSensor(brick.getPort("S1")).getRedMode();
SampleProvider rightLight = new NXTLightSensor(brick.getPort("S2")).getRedMode();
SampleProvider backUltra = new EV3UltrasonicSensor(brick.getPort("S3")).getDistanceMode();
LCDPrinter.print("Loading gyro sensor...");
- SampleProvider gyro = new EV3GyroSensor(brick.getPort("S4")).getAngleAndRateMode();
+ SensorCollector sc = new SensorCollector(backUltra, leftLight, rightLight, new EV3GyroSensor(brick.getPort("S4")));
- LCDPrinter.print("Start BT...");
- BTController.startMaster(brick.getName() == "Rover5" ? "Rover6" : "Rover8", new SensorCollector(backUltra, leftLight, rightLight, gyro));
+ BTController.startMaster(slave, sc);
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();
-// }
+ LinkedList<Mission> missions = Missions.getMissions(sc, rightMotor, leftMotor, measMotor);
+ random = new Random();
+ for(Mission m : missions){
+ LCDPrinter.print("Start " + m.name + " mission...");
+ arb = new Arbitrator(m.behaviours);
+ sc.resetColors();
+ arb.start();
+ LCDPrinter.print(m.name + " finished!!1one!");
+ }
}
}
}
\ No newline at end of file