Neben der Ballfabrik habe ich noch ein kleines Projekt mit dem Legoroboter fertiggestellt.
Wir stellen uns folgende Situation vor: Ein Roboter ist auf dem Mars und soll eine Gesteinsprobe nehmen. Dazu muss er die Umgebung abscannen, um den nächsten Stein zu orten aus dem er die Gesteinsprobe herausnehmen kann. Anschließend soll er sich auf den Stein zubewegen, um die Probe zu entnehmen.
Zu Beginn habe ich erstmal ein Array mit der Länge acht erstellt. Im nächsten Schritt dreht sich der Roboter immer um 45° und misst mit dem Ultrasonic Sensor achtmal den Abstand zwischen dem Roboter und dem nächsten Gegenstand. Die gemessenen Werte werden in das Array eingetragen. Anschließend vergleicht der Roboter die Werte aus dem Array und ermittelt das Minimum. Daraufhin dreht er sich zu der Stelle, wo er das Minimum gemessen hat und fährt solange auf den Gegenstand zu bis einer der beiden Berührungssensoren gedrückt wird.
public class Marsroboter {
public static void warten(int pMs) {
Delay.msDelay(pMs);
}
public static void main(String[] args) throws Exception {
Antrieb a = new Antrieb();
Gehirn g = new Gehirn();
Button.waitForAnyPress();
warten(500);
int minposition=0;
int newrotate=0;
float [] abstand = new float[8];
int i = 0;
while (i <8 ){
abstand[i] = g.gibAbstand();
a.setSpeedLinks(100);
a.setSpeedRechts(100);
a.wenden(900);
i++;
}
double min = abstand [0];
for (int j = 0; j<abstand.length; j++){
if (min>abstand[j]){
min = abstand[j];
minposition=j;
}
}
newrotate=minposition*900;
a.setSpeedLinks(100);
a.setSpeedRechts(100);
a.wenden (newrotate);
while (g.druckLinks() == false && g.druckRechts() == false){
warten(250);
a.geradeaus();
}
a.stop();
}
}