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);
}
}
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);
}
}
}