Servus,

Batterien sind voll, also auch kein Jumper gesteckt, da ich Batterien verwende.
Also das mit der Status LED ist unabhängig vom Programm was drauf ist. Vllt wackelt Kontakt Lötstelle?
Das ist der Programmcode, wo der Roboter sich drehen sollte und mit Ultraschall messen soll, wo die nächste Wand ist.
Und meiner dreht sich nur recht schnell und misst nicht.

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
}
int MedianChirp (int anzahl){ // Nimmt eine Anzahl von Ultraschallwerten auf und gibt den Median zurueck.

int data[anzahl]; // Data Array für Messungen
int x; // Variable für for Schleife
int a; // Hilfsvariable

for(x=0;x<=(anzahl-1);x=x+1){
data[x]= Chirp(); // Fuelle das Array mit Werten auf
}

bubblesort(data,anzahl); // Sortiere die Werte

if(anzahl % 2 == 0){ // Medianberechnung für gerade Anzahl von aufgenommenen Werten
a=0.5*(data[anzahl/2-1]+data[anzahl/2]);
return a;
}

else{ // Medianberechnung für ungerade Anzahl von aufgenommenen Werten
a=((anzahl+1)/2)-1;
return data[a];
}
}