import lejos.nxt.*;/** * A simple line follower for the LEGO 9797 car with * a light sensor. Before the car is started on a line * a BlackWhiteSensor is calibrated to adapt to different * light conditions and colors. * * The light sensor should be connected to port 3. The * left motor should be connected to port C and the right * motor to port B. * * @author Ole Caprani * @version 23.08.07 */public class LineFollowerCal{ public static void main (String[] aArg) throws Exception { final int power = 100; //final int turnPower = 100; final int leftBlackValue = 23; final int leftWhiteValue = 34; final int rightBlackValue = 24; final int rightWhiteValue = 35; final int blueValue = 29; BlackWhiteSensor rightSensor = new BlackWhiteSensor(SensorPort.S2,rightBlackValue,rightWhiteValue); BlackWhiteSensor leftSensor = new BlackWhiteSensor(SensorPort.S3,leftBlackValue,leftWhiteValue); // leftSensor.calibrate(); // rightSensor.calibrate(); DataLogger dlRight = new DataLogger("BWRight.txt"); DataLogger dlLeft = new DataLogger("BWLeft.txt"); LCD.clear(); LCD.drawString("Light: ", 0, 2); LCD.drawString("Press ENTER to start", 0, 0); while (! Button.ENTER.isPressed()){} while (! Button.ESCAPE.isPressed()) { int rightLight = rightSensor.light(); int leftLight = leftSensor.light(); LCD.drawInt(rightLight,4,10,2); LCD.drawInt(leftLight,4,10,3); LCD.refresh(); // if ( sensor.black() ) // Car.forward(power, 0); // else // Car.forward(0, power); boolean leftBlack = leftSensor.black(); boolean rightBlack = rightSensor.black(); boolean leftWhite = leftSensor.white(); boolean rightWhite = rightSensor.white(); if ( leftWhite && rightWhite) Car.forward(power, power); else if(leftBlack && !rightBlack) { Car.forward(0,power); Car.backwardLeft(power/2); } else if(rightBlack && !leftBlack) { Car.forward(power,0); Car.backwardRight(power/2); } else { Car.forward(power,power); } //dlRight.writeSample(rightLight); //dlLeft.writeSample(leftLight); Thread.sleep(1); } Car.stop(); LCD.clear(); LCD.drawString("Program stopped", 0, 0); LCD.refresh(); }}