
Zitat von
Tobias Stosius
Also im Grunde ist es egal welches Programm ich schreibe...
Als test nehmen ich mal ein aktuelles:
Code:
#include "myasuro.h"
#include "asuro.h"
int main()
{
Init();
EncoderInit();
while (1);
{
Go(300,150);
Turn(90,150);
}
return 0;
}
Bei diesem Beispiel leuchtet die StatusLED vom ASURO Grün und mehr tut sich nicht weder anstumpen noch drohen noch bitten oder betteln hilft. Stur wie ein Panzer der Kollege...
Doch ein Software Problemm! Also nicht egal:
while (1);
Das hier oben ist ein sehr Kompaktes Endloss-schleife. Asuro kommt hier nicht raus. Und weil am ende von den Init-funktion die StatusLED Grün schaltet ist. Macht er nichts weiter und Erklärt deine Erfindungen. Die {}-Klammern haben keine weitere Einfluss mehr auf den Ablauf von das Programm. Lössung: ; weg!
Bei dieser Form hier bewegt sich der ASURO ein mal nach vorne und dreht sich in die entsprechende Richtung und bleibt dann stehen, wieder leuchtet die LED Grün:
Code:
#include "myasuro.h"
#include "asuro.h"
int main()
{
Init();
EncoderInit();
Go(300,150);
Turn(90,150);
while (1);
return 0;
}
Genau so hier. Erst eine strecke mit Go, danach ein Drehung von eine bestimmte Winkel. Danach geht er Fest in ein Endloss-schleife. Diese Variant ist aber gut. Weil Asuro nimmer das Befehl return 0; ausführen soll. Lösung: die Go und Turn Funktion Eindinden in eine weitere While-schleife:
Code:
...
while (1)
{
Go(300,150);
Turn(90,150);
} // Ende von den While-endloss schleife
while (1); // Eine weitere, aber überflussige, endloss-schleife zur behebung das ausfuhren der return Befehl.
return 0;
} //Ende Main-Funktion
Lesezeichen