7534d3c3e6635d6c9f56e47e13a70dab5913a8e1
[des2015.git] / mart / ev3 / ex2 / nl / ru / des / StayInFieldBehaviour.java
1 package nl.ru.des;
2
3 import lejos.hardware.motor.EV3LargeRegulatedMotor;
4 import lejos.robotics.subsumption.Behavior;
5
6 public class StayInFieldBehaviour implements Behavior {
7 public static final long BACKWARDSTIME = 250;
8 public static final long TURNTIME = 250;
9
10 private ColorSensor colorSensor;
11 private EV3LargeRegulatedMotor leftMotor, rightMotor;
12 private boolean suppressed;
13
14 public StayInFieldBehaviour(ColorSensor colorSensor, EV3LargeRegulatedMotor leftMotor, EV3LargeRegulatedMotor rightMotor) {
15 this.colorSensor = colorSensor;
16 this.leftMotor = leftMotor;
17 this.rightMotor = rightMotor;
18 }
19
20 @Override
21 public boolean takeControl() {
22 return colorSensor.getCurrentColor() == "Black";
23 }
24
25 @Override
26 public void action() {
27 suppressed = false;
28 int leftacc = leftMotor.getAcceleration();
29 int rightacc = rightMotor.getAcceleration();
30 leftMotor.setAcceleration(10000);
31 rightMotor.setAcceleration(10000);
32 leftMotor.backward();
33 rightMotor.backward();
34 long time = System.currentTimeMillis();
35 while(!suppressed && System.currentTimeMillis()-time > BACKWARDSTIME){
36 Thread.yield();
37 }
38
39 leftMotor.forward();
40 rightMotor.backward();
41 time = System.currentTimeMillis();
42 while(!suppressed && System.currentTimeMillis()-time > TURNTIME){
43 Thread.yield();
44 }
45 leftMotor.stop(true);
46 rightMotor.stop(true);
47 leftMotor.setAcceleration(leftacc);
48 rightMotor.setAcceleration(rightacc);
49 }
50
51 @Override
52 public void suppress() {
53 suppressed = true;
54 }
55 }