import lejos.nxt.Motor;
import lejos.robotics.navigation.TachoPilot;
public class Nxt23_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_Z2 = 15;
final private int ROTATE_FOR_Z3 = 10;
private final TachoPilot MB1_MB2 = new TachoPilot(3.2f, 11.4f, Motor.A, Motor.B);
private final Motor MC1 = Motor.C;
private int columnFrom;
private int columnTo;
private int movedDistance;
Nxt23_EngineControl() {
this.movedDistance = 0;
}
Nxt23_EngineControl(int columnFrom, int columnTo) {
this.columnFrom = columnFrom;
this.columnTo = columnTo;
this.movedDistance = 0;
}
void setColumn(int columnFrom, int columnTo) {
this.columnFrom = columnFrom;
this.columnTo = columnTo;
}
boolean moveToColumnFrom() {
int distance = this.columnFrom - this.movedDistance;
this.MC1.rotate(this.movedDistance * ROTATE_FOR_Z3);
this.movedDistance += distance;
return true;
}
boolean moveToColumnTo() {
int distance = this.columnTo - this.movedDistance;
this.MC1.rotate(this.movedDistance * ROTATE_FOR_Z3);
this.movedDistance += distance;
return true;
}
boolean moveUp() {
this.MB1_MB2.travel(-ROTATE_FOR_Z2);
return true;
}
boolean moveDown() {
this.MB1_MB2.travel(ROTATE_FOR_Z2);
return true;
}
boolean moveToInit() {
this.MC1.rotate(-this.movedDistance * ROTATE_FOR_Z3);
this.movedDistance = 0;
return true;
}
}