final
[des2015.git] / mart / ev3 / ex2 / nl / ru / des / behaviours / AvoidHighObjectBehaviour.java
index e9395f8..181ecb3 100644 (file)
@@ -1,10 +1,11 @@
 package nl.ru.des.behaviours;
 
-import lejos.hardware.Button;
+import java.util.Random;
+
 import lejos.hardware.motor.EV3LargeRegulatedMotor;
 import lejos.robotics.SampleProvider;
 import lejos.robotics.subsumption.Behavior;
-import nl.ru.des.LCDPrinter;
+import lejos.utility.Delay;
 
 public class AvoidHighObjectBehaviour extends ReactiveBehaviour implements Behavior {
        private static final long TURNTIME = 250;
@@ -12,16 +13,17 @@ public class AvoidHighObjectBehaviour extends ReactiveBehaviour implements Behav
        private EV3LargeRegulatedMotor leftMotor;
        private EV3LargeRegulatedMotor rightMotor;
        private float limit;
-
+       private Random random;
+       
        public AvoidHighObjectBehaviour(EV3LargeRegulatedMotor leftMotor, EV3LargeRegulatedMotor rightMotor,
                        SampleProvider ultraSone) {
                super(ultraSone);
                this.leftMotor = leftMotor;
                this.rightMotor = rightMotor;
-               LCDPrinter.print("Place object in turn radius and press a key");
-               Button.waitForAnyPress();
+               Delay.msDelay(500);
                fetchSample();
                limit = samples[0];
+               random = new Random();
        }
 
        @Override
@@ -33,13 +35,24 @@ public class AvoidHighObjectBehaviour extends ReactiveBehaviour implements Behav
        @Override
        public void action() {
                super.action();
-               rightMotor.backward();
-               leftMotor.forward();
+               int leftacc = leftMotor.getAcceleration();
+               int rightacc = rightMotor.getAcceleration();
+               leftMotor.setAcceleration(10000);
+               rightMotor.setAcceleration(10000);
+               if(random.nextBoolean()){
+                       leftMotor.backward();
+                       rightMotor.forward();
+               } else {
+                       rightMotor.backward();
+                       leftMotor.forward();                    
+               }
                long time = System.currentTimeMillis();
-               while (!suppressed && System.currentTimeMillis() - time > TURNTIME) {
+               while (!suppressed && System.currentTimeMillis() - time < TURNTIME) {
                        Thread.yield();
                }
                leftMotor.stop(true);
                rightMotor.stop(true);
+               leftMotor.setAcceleration(leftacc);
+               rightMotor.setAcceleration(rightacc);
        }
 }
\ No newline at end of file