Archiv verlassen und diese Seite im Standarddesign anzeigen : Statuslampe blinkt ab und zu nach einschalten
Servus,
wenn ich ein Programm geflashed hab und dann den Asuro aus und wieder an mach,
blinkt er dann rot/orange. wenn ich dann wieder aus/an mache, kann es sein, er leuchtet dann grün oder blinkt wieder. zufallsprinzip^^
was bedeutet das blinken?
Woran liegt das? das programm funktioniert auch nicht, obwohl es auf einem anderen Roboter geht.
Der Selbsttest funktioniert perfekt und die Ultraschall platine funktioniert auch zu 100%.
programm ist folgendes:
er soll sich in kleinen stückchen um 360° drehen und dabei die Entfernungen zur Wand messen und dann zu der Wand hinfahren, die am nächsten ist.
-> er dreht sich nur sehr schnell auf der stelle und scheint nicht zu messen.
woran kann das liegen???
Der funktionierende Roboter von der Hochschule dreht und misst ganz korrekt. (hält immer kurz an bei jeder messung)
Ohne Programm Code kann niemand darüber sagen was oder nicht stimmt. Deshalb bitte Posten. Wann du keine StatusLED Befehlen im Programm geschrieben habest dann hat vermutlich die Bootloader den Bordspannung gemisst und erkannt das es zu niedrig ist. Dann halt es ab und last den StatusLED Blinken. (Seite 29 der Anleitung! ;) ) Wie geht es mit Aufgeladen Batterien? Und wie ist die Jumper gesteckt?
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 :D !!!");
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];
}
}
Und wo gibt es dein Main Funktion, also dein Hauptprogramm? Bis jetzt sehe ich nur Code von unterstützliche Funktionen. In welcher Ordnung werden diese angerufen? Bitte post alles was du geschrieben hat fur dieses Programm.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.