import lejos.nxt.Motor; import lejos.robotics.navigation.TachoPilot; public class Nxt25_EngineControl { /* * z1 ist die Strecke zwischen den Felder fuer das Vorwaerts und * Rueckwaertsbewegen z2 ist die Strecke fuer die Hoch/Runter bewegung z3 * ist die Strecke zwischen den Feldern fuer die Links/rechts bewegung z4 * ist die Rotation fuer das auf und zu greifen */ final private int ROTATE_FOR_Z1 = 10; final private int ROTATE_FOR_Z4 = 5; private final TachoPilot MA1_MA2 = new TachoPilot(3.2f, 11.4f, Motor.A, Motor.B); private final Motor MC2 = Motor.C; private int rowFrom; private int rowTo; private int movedDistance; Nxt25_EngineControl() { } Nxt25_EngineControl(int rowFrom, int rowTo) { this.rowFrom = rowFrom; this.rowTo = rowTo; } void setRow(int rowFrom, int rowTo) { this.rowFrom = rowFrom; this.rowTo = rowTo; } boolean moveToRowFrom() { int distance = this.rowFrom - this.movedDistance; this.MA1_MA2.travel(this.movedDistance * ROTATE_FOR_Z1); this.movedDistance += distance; return true; } boolean moveToRowTo() { int distance = this.rowTo - this.movedDistance; this.MA1_MA2.rotate(this.movedDistance * ROTATE_FOR_Z1); this.movedDistance += distance; return true; } boolean grabfigure() { this.MC2.rotate(ROTATE_FOR_Z4); return true; } boolean dropfigure() { this.MC2.rotate(-ROTATE_FOR_Z4); return true; } boolean moveToInit() { this.MA1_MA2.travel(-this.movedDistance * ROTATE_FOR_Z1); this.movedDistance = 0; return true; } }