void SearchWall(int Winkel, int Richtung){ // Sucht die naechste Wand. Wenn keine Wand in Reichweite, dann rotes Blinken der Status-LED.
// Wenn Wand gefunden, dann ausrichten
int data[Winkel+1]; // Data array für Messungen
int x; // Variable für for Schleife
int a; // Variable für die kleineste Entfernung
int w;
w=Winkel;
SerPrint("\r\n SearchWall()");
for(x=0;x<=(Winkel);x=x+1){ // Winkel = 60=360° 30=180 15=90 Richtung= -7 =links //+7 =rechts
data[x]= MedianChirp(5);
GoTurn (0,Richtung,turnspeed);
Msleep(100);
}
bubblesort(data,Winkel); // Sortiere die Werte
a = data[0];
while((MedianChirp(5)>a+1) && (w>=0)){ // Wichtig nach Abbiegen dass er nicht die falsche Wand erfasst!!!!
GoTurn(0,-Richtung,turnspeed);
Msleep(100);
w--;
}
if((data[0]>free)==1){ // Wenn keine Wand mehr da ist, ist ASURO draußen
while(1){
SerPrint("\r\n Ich bin draussen
!!!");
StatusLED(OFF);
Msleep(100);
StatusLED(GREEN);
Msleep(100);
}
}
else Orientate(); // Ansonsten richtet sich ASURO an der gefundenen Wand aus
}
Lesezeichen