update mart
[des2015.git] / mart / ev3 / ex2 / nl / ru / des / behaviours / AvoidHighObjectBehaviour.java
1 package nl.ru.des.behaviours;
2
3 import lejos.hardware.Button;
4 import lejos.hardware.motor.EV3LargeRegulatedMotor;
5 import lejos.robotics.SampleProvider;
6 import lejos.robotics.subsumption.Behavior;
7 import nl.ru.des.LCDPrinter;
8
9 public class AvoidHighObjectBehaviour extends ReactiveBehaviour implements Behavior {
10 private static final long TURNTIME = 250;
11
12 private EV3LargeRegulatedMotor leftMotor;
13 private EV3LargeRegulatedMotor rightMotor;
14 private float limit;
15
16 public AvoidHighObjectBehaviour(EV3LargeRegulatedMotor leftMotor, EV3LargeRegulatedMotor rightMotor,
17 SampleProvider ultraSone) {
18 super(ultraSone);
19 this.leftMotor = leftMotor;
20 this.rightMotor = rightMotor;
21 LCDPrinter.print("Place object in turn radius and press a key");
22 Button.waitForAnyPress();
23 fetchSample();
24 limit = samples[0];
25 }
26
27 @Override
28 public boolean takeControl() {
29 fetchSample();
30 return samples[0] < limit;
31 }
32
33 @Override
34 public void action() {
35 super.action();
36 rightMotor.backward();
37 leftMotor.forward();
38 long time = System.currentTimeMillis();
39 while (!suppressed && System.currentTimeMillis() - time > TURNTIME) {
40 Thread.yield();
41 }
42 leftMotor.stop(true);
43 rightMotor.stop(true);
44 }
45 }