Phys/CSci 135: Assignments
Home Syllabus Assignments Samples

Lab 7. Pen Drawer

Pen (page 57)

import lejos.nxt.*;

public class Pen {
    private TouchSensor penSensor;

    public Pen(TouchSensor ps) {
        penSensor = ps;
    }

    public void raise() {
        /* Your code here */
    }

    public void lower() {
        /* Your code here */
    }

    public static void main(String[] args) {
        TouchSensor penSensor = new TouchSensor(SensorPort.S4);
        Pen p = new Pen(penSensor);
        p.lower();
        while (Button.LEFT.isPressed() == false) {}
        p.raise();
    }
}

DrawLine (page 58)

import lejos.nxt.*;

public class DrawLine {
    public static void main(String[] args) {
        TouchSensor penSensor = new TouchSensor(SensorPort.S4);
        Pen p = new Pen(penSensor);
        p.lower();
        /* 1: Start robot driving forward */
        /* 2: Wait until the robo has driven for 10cm */

        p.raise();
    }
}

LineDrawer (page 59)

import lejos.nxt.*;

public class LineDrawer implements Action {
    private Pen p;
    private RotationDelay delay;

    public LineDrawer(TouchSensor penSensor, int counts) {
        p = new Pen(penSensor);
        delay = new RotationDelay(Motor.B, counts);
    }

    public void act() {
        /* Your code here */
    }

    public static void main(String[] args) {
        TouchSensor penSensor = new TouchSensor(SensorPort.S4);
        Action drawer = new LineDrawer(penSensor, /* 10 cm counts */)
        drawer.act();
    }
}

DrawL (page 60)

import lejos.nxt.*;

public class DrawL {
    public static void main(String[] args) {
        TouchSensor ts = new TouchSensor(SensorPort.S4);
        Pen pen = new Pen(ts);
        LineDrawer longPart = new LineDrawer(pen, 300);
        LineDrawer shortPart = new LineDrawer(pen, 150);
        SpinLeftMove spinner = new SpinLeftMove();

        shortPart.act();
        spinner.act();
        longPart.act();
    }
}