updated lcd printer and better low object avoidance behaviour
[des2015.git] / mart / ev3 / ex1 / nl / ru / des / Main.java
1 package nl.ru.des;
2
3 import lejos.hardware.Audio;
4 import lejos.hardware.ev3.EV3;
5 import lejos.hardware.ev3.LocalEV3;
6 import lejos.hardware.lcd.Font;
7 import lejos.hardware.motor.EV3LargeRegulatedMotor;
8 import lejos.hardware.port.MotorPort;
9 import lejos.hardware.sensor.EV3TouchSensor;
10 import lejos.hardware.sensor.EV3UltrasonicSensor;
11 import lejos.hardware.sensor.NXTLightSensor;
12 import lejos.robotics.subsumption.Arbitrator;
13 import lejos.robotics.subsumption.Behavior;
14 import lejos.utility.Delay;
15
16 public class Main {
17
18 public static void main(String[] args) {
19 EV3 brick = LocalEV3.get();
20 LCDPrinter lcdprinter = new LCDPrinter(brick.getGraphicsLCD(), Font.getSmallFont());
21 LCDPrinter.print("Starting up systems");
22 lcdprinter.start();
23
24 LCDPrinter.print("Loading audio...");
25 Audio audio = brick.getAudio();
26 WavPlayer wavplayer = new WavPlayer(audio);
27 wavplayer.start();
28 WavPlayer.playWav("boot.wav");
29
30 LCDPrinter.print("Loading keylistener...");
31 brick.getKey("Escape").addKeyListener(new ButtonListener());
32
33 LCDPrinter.print("Loading motors...");
34 EV3LargeRegulatedMotor rightMotor = new EV3LargeRegulatedMotor(MotorPort.D);
35 EV3LargeRegulatedMotor leftMotor = new EV3LargeRegulatedMotor(MotorPort.A);
36 rightMotor.setSpeed(300);
37 leftMotor.setSpeed(300);
38 rightMotor.setAcceleration(1000);
39 leftMotor.setAcceleration(1000);
40
41 LCDPrinter.print("Loading touch sensors...");
42 EV3TouchSensor leftTouch = new EV3TouchSensor(brick.getPort("S1"));
43 EV3TouchSensor rightTouch = new EV3TouchSensor(brick.getPort("S4"));
44 LCDPrinter.print("Loading light sensor...");
45 NXTLightSensor lightSensor = new NXTLightSensor(brick.getPort("S2"));
46 LCDPrinter.print("Loading ultrasone sensor...");
47 EV3UltrasonicSensor ultraSensor = new EV3UltrasonicSensor(brick.getPort("S3"));
48
49 WavPlayer.playWav("bootsystem.wav");
50
51 LCDPrinter.print("Initializing behaviours...");
52 Behavior[] behaviorList = new Behavior[] {
53 new WandererBehaviour(leftMotor, rightMotor),
54 new AvoidHighObjectBehaviour(leftMotor, rightMotor, ultraSensor),
55 new AvoidLowObjectBehaviour(leftMotor, rightMotor, leftTouch, rightTouch),
56 new StayInFieldBehaviour(lightSensor, leftMotor, rightMotor),
57 };
58
59 WavPlayer.playWav("calibrate.wav");
60
61 LCDPrinter.print("Initializing arbitrator...");
62 Arbitrator arb = new Arbitrator(behaviorList);
63
64 WavPlayer.playWav("takeoff.wav");
65 Delay.msDelay(1850);
66 LCDPrinter.print("Takeoff!");
67 arb.start();
68 lightSensor.close();
69 ultraSensor.close();
70 }
71 }