Phys/CSci 135: Assignments
Home Syllabus Assignments Samples

Lab 8. Searching With Sensors

LineObserver (page 63)

import lejos.nxt.*;

public class LineObserver {
    public static void main(String[] args) {
        LightSensor light = new LightSensor(SensorPort.S3);
        while (!Button.ESCAPE.isPressed()) {
            if (/* line is found*/) {
                LCD.drawString("Line seen"00);
            } else {
                LCD.drawString("Line lost"00);
            }
        }
    }
}

LineFollower (page 64)

import lejos.nxt.*;

public class LineFollower implements Action {
    private LightSensor light;
    private Action lost, found;

    public LineFollower(LightSensor ls, Action lost, Action found) {
        light = ls;
        this.found = found;
        this.lost = lost;
    }

    public void act() {
        while (!Button.ESCAPE.isPressed()) {
            if (/* line is found */) {
                found.act();
            } else {
                lost.act();
            }
        }
    }
}

LineSpinner (page 65)

import lejos.nxt.*;

public class LineSpinner {
    public static void main(String[] args) {
        LightSensor light = new LightSensor(SensorPort.S3);
        Action found = new SpinLeftMove();
        Action lost = new SpinRightMove();
        LineFollower controller =
            new LineFollower(light, lost, found);
        controller.act();
    }
}

LineWiggler (page 65)

import lejos.nxt.*;

public class LineWiggler {
    public static void main(String[] args) {
        LightSensor light = new LightSensor(SensorPort.S3);
        Action found = new ForwardMove();
        Action lost = new BackwardMove();
        LineFollower controller =
            new LineFollower(light, lost, found);
        controller.act();
    }
}

Searcher (page 67)

import lejos.nxt.*;

public class Searcher implements Action {
    private Condition finder;
    private Action lost, found;

    public LineFollower(Condition finder, Action lost, Action found) {
        this.finder = finder;
        this.found = found;
        this.lost = lost;
    }

    public void act() {
        while (Button.ESCAPE.isPressed() == false) {
            if (finder.conditionMet()) {
                found.act();
            } else {
                lost.act();
            }
        }
    }
}