Hallo liebe Community,
ich bin noch ein relativer Anfänger was das Programmieren mit Java angeht,
und hab mich jetzt mal an den NXT Roboter von Lego gemacht und wollte mit Java etwas programmieren. Habe dafür etwas im Internet nach inspiration gesucht und bin auf einen Code gestoßen mit dem es mir möglich ist meinen Roboter zu steuern, in dem er ein Gerät scannt, welches die Bildschirmfarbe wechselt und so die Richtung vorgibt. Wollte einen ähnlichen eigenen Code schreiben, was auch durchauß funktioniert hat, jedoch habe ich ein zwei stellen in dem gefundenen Code nicht verstanden und würde vielleicht einen kleinen Tipp gebrauchen können.
Der Code ist folgender, habe die Problemstellen so ****** markiert :
ich hoffe ihr könnt mir ein bisschen auf die Sprünge helfen.
MfG
fdor_java
ich bin noch ein relativer Anfänger was das Programmieren mit Java angeht,
und hab mich jetzt mal an den NXT Roboter von Lego gemacht und wollte mit Java etwas programmieren. Habe dafür etwas im Internet nach inspiration gesucht und bin auf einen Code gestoßen mit dem es mir möglich ist meinen Roboter zu steuern, in dem er ein Gerät scannt, welches die Bildschirmfarbe wechselt und so die Richtung vorgibt. Wollte einen ähnlichen eigenen Code schreiben, was auch durchauß funktioniert hat, jedoch habe ich ein zwei stellen in dem gefundenen Code nicht verstanden und würde vielleicht einen kleinen Tipp gebrauchen können.
Der Code ist folgender, habe die Problemstellen so ****** markiert :
Java:
import lejos.nxt.Button;
import lejos.nxt.LCD;
import lejos.nxt.LightSensor;
import lejos.nxt.Motor;
import lejos.nxt.SensorPort;
public class iPhoneRoboter {
// Lichtsensor zum fahren
static final LightSensor center_light = new LightSensor(SensorPort.S1,true);
public static void main(String args[]) throws Exception {
Thread.sleep(1000);
// Messung durchführen, weiß wird erwartet
LCD.clear();
LCD.drawString("messe weiß", 0, 0);
LCD.refresh();
Button.ENTER.waitForPressAndRelease();
Thread.sleep(1000);
int measure = center_light.readNormalizedValue();
center_light.calibrateHigh();
// Messung durchführen, schwarz wird erwartet
LCD.clear();
LCD.drawString("messe schwarz", 0, 0);
LCD.drawInt(measure, 0, 1);
LCD.refresh();
Button.ENTER.waitForPressAndRelease();
Thread.sleep(1000);
int next_measure = center_light.readNormalizedValue();
center_light.calibrateLow();
LCD.clear();
LCD.drawString("init komplett", 0, 0);
LCD.drawInt(next_measure, 0, 1);
LCD.drawInt(measure, 0,2);
LCD.refresh();
// 0 bis 100 ist gesetzt, Regulärer Modus gesetzt
Thread.sleep(5000);
// 5 Werte,
***** int oldstate = -1; *******
***** int currstate = 0; *******
****int val = 0; ******
*****int rawval = 0; ******
// main loop
while (true) {
// normalize to 5 bins, 0 thru 4
rawval = center_light.readNormalizedValue();
val = center_light.readValue();
****currstate = (val * 5) / 100; ******
if (currstate != oldstate) {
**** oldstate = currstate; ******
int left = 0;
int right = 0;
// depending on the current state,
// drive in the specified direction
if (currstate <= 0) {
left = 0;
right = 0;
} else if (currstate == 1) {
left = -1;
right = 1;
} else if (currstate == 2) {
left = 1;
right = -1;
} else if (currstate == 3) {
left = 1;
right = 1;
} else if (currstate >= 4) {
left = -1;
right = -1;
}
LCD.clear();
LCD.drawInt(rawval, 0, 0);
LCD.drawInt(val, 0, 1);
LCD.drawInt(currstate, 0, 2);
LCD.drawInt(left, 0, 3);
LCD.drawInt(right, 0, 4);
LCD.refresh();
// left motor is A
if (left == 0) {
Motor.A.stop();
} else if (left == 1) {
Motor.A.setSpeed(400);
Motor.A.forward();
} else if (left == -1) {
Motor.A.setSpeed(400);
Motor.A.backward();
}
// right motor is B
if (right == 0) {
Motor.C.stop();
} else if (right == 1) {
Motor.C.setSpeed(400);
Motor.C.forward();
} else if (right == -1) {
Motor.C.setSpeed(400);
Motor.C.backward();
}
}
}
}
}
ich hoffe ihr könnt mir ein bisschen auf die Sprünge helfen.
MfG
fdor_java
Zuletzt bearbeitet von einem Moderator: