Skip to content

Instantly share code, notes, and snippets.

@idodin
Created September 15, 2018 15:18
Show Gist options
  • Save idodin/e4f4444203a733c414b7fb8cd8bccbe4 to your computer and use it in GitHub Desktop.
Save idodin/e4f4444203a733c414b7fb8cd8bccbe4 to your computer and use it in GitHub Desktop.
DPM Lab 1 Scribbles

First Demo Code

package myPackage;

import lejos.hardware.ev3.LocalEV3;
import lejos.hardware.motor.Motor;
import lejos.hardware.port.Port;
import lejos.hardware.sensor.EV3TouchSensor;
import lejos.hardware.sensor.SensorModes;
import lejos.robotics.RegulatedMotor;
import lejos.robotics.SampleProvider;

public class demo1{

  static RegulatedMotor leftMotor = Motor.A;
  static RegulatedMotor rightMotor = Motor.D;
  
  static Port portTouch = LocalEV3.get().getPort("S2");
  static SensorModes myTouch = new EV3TouchSensor(portTouch);
  static SampleProvider myTouchStatus = myTouch.getMode(0);
  static float[] sampleTouch = new float[myTouchStatus.sampleSize()];
  
  public static final int FWDSPEED = 200;
  
  public static void main(String args[]){
    leftMotor.setSpeed(FWDSPEED);
    rightMotor.setSpeed(FWDSPEED);
    leftMotor.forward();
    rightMotor.forward();
    
    while(true){
      myTouchStatus.fetchSample(sampleTouch,0);
      if (sampleTouch[0]==1) break;
    }
    System.exit(0);
    
  }
}

Wall Follower Code:

package wf1EV3;

import lejos.hardware.Button;
import lejos.hardware.ev3.LocalEv3;
import lejos.hardware.lcd.TextLCD;
import lejos.hardware.motor.Motor;
import lejos.hardware.port.Port;
import lejos.hardware.sensor.EV3TouchSensor;
import lejos.hardware.sensor.EV3UltraSonicSensor;
import lejos.hardware.sensor.SensorModes;
import lejos.robotics.RegulatedMotor;
import lejos.robotics.SmapleProvided;

public class SimpleWF {
  
  public static final int WALLDIST = 20;
  public static final int DEADBAND = 2;
  public static final int FWDSPEED = 200;
  public static final int DELTASPD = 100;
  public static final int SLEEPINT = 40;
  
  public static int wallDist=0;
  public static int distError=0;
  
  static TextLCD t = LocalEV3.get().getTextLCD();
  static RegulatedMotor leftMotor = Motor.A;
  static RegulatedMotor rightMotor = Motor.D;
  
  static Port portUS = LocalEV3.get().getPort("S1");
  static Port portTouch = LocalEV3.get().getPort("S2");
  
  static SensorModes myUS = new EV3UltrasonicSensor(portUS):
  static SensorModes myTouch = new EV3TouchSensor(portTouch);
  
  static SampleProvider myDistance = myUS.getMode("Distance");
  static SampleProvider myTouchStatus = myTouch.getMode(0);
  
  static float[] sampleUS = new float[myDistance.sampleSize()];
  static float[] sampleTouch = new float[myTouchStatus.sampleSize()];
  
  public static void main(String[] args) throws InterruptedException {
    t.clear();
    t.drawString("Simple Wall F", 0, 0);
    t.drawString("Distance:",0,1);
    
    leftMotor.setSpeed(FWDSPEED);
    rightMotor.setSpeed(FWDSPEED):
    leftMotor.forward();
    rightMotor.forward();
    
    boolean traveling = true;
    int status = 0;
    
    while(traveling){
      status = Button.readButtons();
      myTouchStatus.fetchSample(sampleTouch, 0);
      if((status==Button.ID_ALL)||(sampleTouch[0]==1)) System.exit(0);
      
      myDistance.fetchSample(sampleUS, 0);
      wallDist = (int)(sampleUS[0]*100.0);
      t.drawInt(wallDist,6,11,1);
      
      distError = wallDIST - wallDist;
      
      if (math.abs(distError) <= DEADBAND)P
        leftMotor.setSpeed(FWDSPEED);
        rightMotor.setSpeed(FWDSPEED);
        leftMotor.forward();
        rightMotor.forward();
      }
      else if (distError > 0){
        leftMotor.setSpeed(FWDSPEED);
        rightMotor.setSpeed(FWDSPEED-DELTASPD);
        leftMotor.forward();
        rightMotor.forward();
      }
      else if (distError < 0){
        leftMotor.setSpeed(FWDSPEED);
        rightMotor.setSpeed(FWDSPEED+DELTASPD);
        leftMotor.forward();
        rightMotor.forward();
      }
      Thread.sleep(SLEEPINT); 
    }
  }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment