Advertisement
Guest User

Untitled

a guest
May 5th, 2015
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.58 KB | None | 0 0
  1. import lejos.hardware.Button;
  2. import lejos.hardware.motor.Motor;
  3. import lejos.hardware.port.SensorPort;
  4. import lejos.robotics.subsumption.Arbitrator;
  5. import lejos.robotics.subsumption.Behavior;
  6. import lejos.utility.Delay;
  7.  
  8.  
  9. public class BotBattle1 {
  10.         static USDeclaration usSensor;
  11.         static CDeclaration cSensor;
  12.         public static void main(String args[]){
  13.                
  14.  
  15.                 cSensor = new CDeclaration(SensorPort.S1);
  16.                 cSensor.setDaemon(true);
  17.                 cSensor.start();
  18.                
  19.                 usSensor = new USDeclaration(SensorPort.S3);
  20.                 usSensor.setDaemon(true);
  21.                 usSensor.start();
  22.                
  23.                 Behavior b1 = new ColorCheck();
  24.                 Behavior b2 = new DistanceCheck();
  25.                 Behavior b3 = new Search();
  26.                 Behavior[] behaviorArray = {b2, b3};
  27.                
  28.                 Arbitrator arbitrator = new Arbitrator(behaviorArray);
  29.  
  30.                 Button.waitForAnyPress();
  31.                 Delay.msDelay(5000);
  32.                 Motor.A.setSpeed(12000);
  33.                 Motor.B.setSpeed(12000);
  34.                 Motor.A.setAcceleration(12000);
  35.                 Motor.B.setAcceleration(12000);
  36.                 arbitrator.start();
  37.                
  38.  
  39.         }
  40. }
  41.  
  42.  
  43. import lejos.hardware.motor.Motor;
  44. import lejos.robotics.subsumption.Behavior;
  45.  
  46. public class DistanceCheck implements Behavior{
  47.         private boolean suppressed = false;
  48.  
  49.         float myDistance;
  50.        
  51.         public boolean takeControl() {
  52.                 //Check distance
  53.                 myDistance = BotBattle1.usSensor.distance;
  54.                 //System.out.println(myDistance);
  55.                 if(myDistance < .6){
  56.                         return true;
  57.                 }else{
  58.                         return false;
  59.                 }
  60.  
  61.         }
  62.  
  63.         public void action() {
  64.                 //Move toward target
  65.                 suppressed = false;
  66.                 Motor.A.forward();
  67.                 Motor.B.forward();
  68.                 while(!suppressed)
  69.                         Thread.yield();
  70.                 Motor.A.stop();
  71.                 Motor.B.stop();
  72.                
  73.         }
  74.  
  75.  
  76.         public void suppress() {
  77.                 Motor.A.stop();
  78.                 Motor.B.stop();
  79.                 suppressed = true;
  80.         }
  81. }
  82.  
  83. import lejos.hardware.motor.Motor;
  84. import lejos.robotics.Color;
  85. import lejos.robotics.subsumption.Behavior;
  86. import lejos.utility.Delay;
  87.  
  88.  
  89. class ColorCheck implements Behavior{
  90.         private boolean suppressed = false;
  91.  
  92.         float myColor;
  93.        
  94.         public boolean takeControl()
  95.         {
  96.                 //Check the color
  97.                 myColor = BotBattle1.cSensor.color;
  98.                 if (myColor ==Color.BLACK)
  99.                 {
  100.                         return true;
  101.                 }
  102.                 else
  103.                 {
  104.                         return false;
  105.                 }
  106.         }
  107.         public void action() {
  108.                 //Move backward and pivot 180°
  109.                 Motor.A.backward();
  110.                 Motor.B.backward();
  111.                 Delay.msDelay(3000);
  112.                 while( !suppressed )
  113.                         Thread.yield();
  114.                 Motor.A.stop(); // clean up
  115.                 Motor.B.stop();
  116.                 //Motor.A.resetTachoCount();
  117.                 //Motor.B.resetTachoCount();
  118.                 //Motor.A.rotate(180);
  119.                 //Motor.B.rotate(-180);
  120.  
  121.         }
  122.         public void suppress() {
  123.                 Motor.A.stop();
  124.                 Motor.B.stop();
  125.                 suppressed = true;
  126.  
  127.         }
  128. }import lejos.hardware.motor.Motor;
  129. import lejos.robotics.subsumption.Behavior;
  130.  
  131.  
  132. class Search implements Behavior{
  133.         private boolean suppressed = false;
  134.  
  135.         public boolean takeControl() {
  136.                 return true;
  137.         }
  138.  
  139.         public void action() {
  140.                 suppressed = false;
  141.                 Motor.A.forward();
  142.                 Motor.B.backward();
  143.                 while( !suppressed )
  144.                         Thread.yield();
  145.                 Motor.A.stop(); // clean up
  146.                 Motor.B.stop();
  147.  
  148.         }
  149.  
  150.         public void suppress() {
  151.                 Motor.A.stop();
  152.                 Motor.B.stop();
  153.                 suppressed = true;
  154.         }
  155.  
  156.  
  157. }
  158. import lejos.hardware.port.Port;
  159. import lejos.hardware.sensor.EV3UltrasonicSensor;
  160. import lejos.robotics.SampleProvider;
  161.  
  162.  
  163. public class USDeclaration extends Thread{
  164.         EV3UltrasonicSensor us;
  165.         SampleProvider sp;
  166.         public float distance = 0;
  167.     float [] sample = new float[1];
  168.        
  169.     public USDeclaration(Port usPort){
  170.         us = new EV3UltrasonicSensor(usPort);
  171.         sp = us.getDistanceMode();
  172.     }
  173.    
  174.     public void run()
  175.     {
  176.         while (true)
  177.         {
  178.             us.fetchSample(sample, 0);
  179.             distance = sample[0];          
  180.         }
  181.        
  182.     }
  183.  
  184. }
  185. import lejos.hardware.port.Port;
  186. import lejos.hardware.sensor.EV3ColorSensor;
  187. import lejos.robotics.SampleProvider;
  188.  
  189.  
  190. public class CDeclaration extends Thread{
  191.         EV3ColorSensor c;
  192.         SampleProvider sp;
  193.         public float color = 0;
  194.     float [] sample = new float[1];
  195.        
  196.     public CDeclaration(Port usPort){
  197.         c = new EV3ColorSensor(usPort);
  198.         sp = c.getColorIDMode();
  199.     }
  200.    
  201.     public void run()
  202.     {
  203.         while (true)
  204.         {
  205.             c.fetchSample(sample, 0);
  206.             color = sample[0];          
  207.         }
  208.        
  209.     }
  210. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement