package nl.ru.des;
+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.port.MotorPort;
import lejos.hardware.sensor.EV3ColorSensor;
+import lejos.hardware.sensor.EV3TouchSensor;
+import lejos.hardware.sensor.EV3UltrasonicSensor;
import lejos.robotics.subsumption.Arbitrator;
import lejos.robotics.subsumption.Behavior;
+import nl.ru.des.behaviours.AvoidHighObjectBehaviour;
+import nl.ru.des.behaviours.AvoidLowObjectBehaviour;
+import nl.ru.des.behaviours.ShutdownBehaviour;
+import nl.ru.des.behaviours.StayInFieldBehaviour;
+import nl.ru.des.behaviours.WandererBehaviour;
+import nl.ru.des.bluetooth.BTController;
+import nl.ru.des.bluetooth.ColorMemory;
+import nl.ru.des.sensors.ColorSensor;
+import nl.ru.des.sensors.TouchSensor;
+import nl.ru.des.sensors.UltraSoneSensor;
public class Main {
public static Arbitrator arbitrator;
public static void main(String[] args) {
EV3 brick = LocalEV3.get();
- LCDPrinter lcdprinter = new LCDPrinter(brick.getGraphicsLCD(), Font.getSmallFont());
- lcdprinter.start();
- /*
- * Start the slave first. "Socket is 18" is always displayed, we can just ignore this
- */
+ TextLCD tlcd = brick.getTextLCD(Font.getSmallFont());
+ LCDPrinter.startLCDPrinter(tlcd);
+ System.setOut(LCDPrinter.getPrefixedPrintstream("out: ", tlcd));
+ System.setErr(LCDPrinter.getPrefixedPrintstream("err: ", tlcd));
+
ColorMemory mh = new ColorMemory();
- //BTController btController = BTController.getBTMaster("Rover2", mh); // Master
- BTController btController = BTController.getBTSlave(mh); // Slave
+ LCDPrinter.print("Loading keylistener...");
+ brick.getKey("Escape").addKeyListener(new ButtonListener());
+
+ BTController btController;
+ LCDPrinter.print("Trying to pair");
+ btController = BTController.getBTMaster("Rover1", mh); // Master
+ //btController = BTController.getBTSlave(mh); // Slave
btController.start();
- BTController.SendMessage("Hi");
LCDPrinter.print("Robots are connected");
-
- LCDPrinter.print("Starting up systems");
-
-
- LCDPrinter.print("Loading keylistener...");
- brick.getKey("Escape").addKeyListener(new ButtonListener());
LCDPrinter.print("Loading motors...");
EV3LargeRegulatedMotor rightMotor = new EV3LargeRegulatedMotor(MotorPort.D);
rightMotor.setAcceleration(1000);
leftMotor.setAcceleration(1000);
-// LCDPrinter.print("Loading touch sensors...");
-// EV3TouchSensor leftTouch = new EV3TouchSensor(brick.getPort("S1"));
-// EV3TouchSensor rightTouch = new EV3TouchSensor(brick.getPort("S4"));
+ LCDPrinter.print("Loading touch sensors...");
+ TouchSensor leftTouchSensor = new TouchSensor(new EV3TouchSensor(brick.getPort("S1")));
+ TouchSensor rightTouchSensor = new TouchSensor(new EV3TouchSensor(brick.getPort("S4")));
LCDPrinter.print("Loading color sensor...");
- EV3ColorSensor colorSensor = new EV3ColorSensor(brick.getPort("S2"));
- ColorSensor colorSensorObject = new ColorSensor(colorSensor);
+ ColorSensor colorSensorObject = new ColorSensor(new EV3ColorSensor(brick.getPort("S2")));
-// LCDPrinter.print("Loading ultrasone sensor...");
-// EV3UltrasonicSensor ultraSensor = new EV3UltrasonicSensor(brick.getPort("S3"));
+ LCDPrinter.print("Loading ultrasone sensor...");
+ UltraSoneSensor ultraSoneSensor = new UltraSoneSensor(new EV3UltrasonicSensor(brick.getPort("S3")));
LCDPrinter.print("Initializing behaviours...");
Behavior[] behaviorList = new Behavior[] {
new WandererBehaviour(colorSensorObject, leftMotor, rightMotor, mh),
- new StayInFieldBehaviour(colorSensorObject, leftMotor, rightMotor)
- //new CommBehaviour(leftMotor, rightMotor)
+ new StayInFieldBehaviour(colorSensorObject, leftMotor, rightMotor),
+ new AvoidLowObjectBehaviour(leftMotor, rightMotor, leftTouchSensor, rightTouchSensor),
+ new AvoidHighObjectBehaviour(leftMotor, rightMotor, ultraSoneSensor),
+ new ShutdownBehaviour(mh)
};
LCDPrinter.print("Initializing arbitrator...");
Main.arbitrator = new Arbitrator(behaviorList);
+ LCDPrinter.print("Press any button for takeoff!");
+ Button.waitForAnyPress();
Main.arbitrator.start();
- LCDPrinter.print("Takeoff!");
- colorSensor.close();
-// ultraSensor.close();
+ LCDPrinter.print("Finish");
}
}
\ No newline at end of file