1 package nl
.ru
.des
.behaviours
;
3 import lejos
.hardware
.motor
.EV3LargeRegulatedMotor
;
4 import lejos
.robotics
.Color
;
5 import lejos
.robotics
.subsumption
.Behavior
;
6 import nl
.ru
.des
.sensors
.ColorSensor
;
8 public class StayInFieldBehaviour
implements Behavior
{
9 public static final long BACKWARDSTIME
= 250;
10 public static final long TURNTIME
= 250;
12 private ColorSensor colorSensor
;
13 private EV3LargeRegulatedMotor leftMotor
, rightMotor
;
14 private boolean suppressed
;
16 public StayInFieldBehaviour(ColorSensor colorSensor
, EV3LargeRegulatedMotor leftMotor
,
17 EV3LargeRegulatedMotor rightMotor
) {
18 this.colorSensor
= colorSensor
;
19 this.leftMotor
= leftMotor
;
20 this.rightMotor
= rightMotor
;
24 public boolean takeControl() {
25 return colorSensor
.getCurrentColor() == Color
.BLACK
;
29 public void action() {
31 int leftacc
= leftMotor
.getAcceleration();
32 int rightacc
= rightMotor
.getAcceleration();
33 leftMotor
.setAcceleration(10000);
34 rightMotor
.setAcceleration(10000);
36 rightMotor
.backward();
37 long time
= System
.currentTimeMillis();
38 while (!suppressed
&& System
.currentTimeMillis() - time
> BACKWARDSTIME
) {
43 rightMotor
.backward();
44 time
= System
.currentTimeMillis();
45 while (!suppressed
&& System
.currentTimeMillis() - time
> TURNTIME
) {
49 rightMotor
.stop(true);
50 leftMotor
.setAcceleration(leftacc
);
51 rightMotor
.setAcceleration(rightacc
);
55 public void suppress() {