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