PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Schneeschieber - ein Project



Weiti
30.10.2007, 23:58
Sooo, nachdem ich vereinzelt in einigen Themen schon um Hilfe gebeten habe, hier mein Problem in seiner gesamtheit.

ich möchte ein programm für den asuro schreiben, der schnee scieben kann. ein rechteckiger hof, auf dem vereinzelt hindernisse stehen können soll in bahnen befahren werden.

mein fertiges programm ist leicht fehlrhaft. vielleicht hat ja jemand einen moment zeit einige fehler zu korregieren.


int main()
{
Init();
while (PollSwitch()==0) {
MotorDir(FWD,FWD);
MotorSpeed(120,120);
CStrecke++;
}

If (CStrecke=LengeHof) {
SpurWechseln();
}
else{
Ausweichen();

while (1); //ansonsten endlos
return 0; //wird nicht erreicht
}

edit: warum kann ich kein bild hochladen?

radbruch
31.10.2007, 00:20
Hallo

Dein ATMega führt 8 Millionen Befehle in der Sekunde aus. Dein "CStrecke" wird explodieren. Außerdem muss dein asuro erst gegen die Wand knallen damit er prüfen kann, ob CStrecke schon hoflänge erreicht hat. Beim else-Zweig fehlt eine }


vielleicht hat ja jemand einen moment zeit einige fehler zu korregieren.
Würde ich schon machen, aber was du hier ablieferst ist sehr mager. Sorry, aber so macht mir das keinen Spass. Gib mal etwas Gas und schluder deine Ideen nicht so lieblos hin.

So machen das automatische Staubsauger:

http://saugrobot.de/saugroboter-maeander.html
(rechts sind unter "Bewegungsstrategien" noch weitere Möglichkeiten beschrieben)

Gruß

mic

Weiti
31.10.2007, 09:51
ok, ok! Ich setze mich nochmal drann, klar. So vorab zwei Strukturelle Fehler, die mir erst hinterher aufgefallen sind:
LengeHof muss erst mal festgelegt werden,
Am Ende des hofes sollte er anhalten.
UNd: nach deiner Info: zwischen den befehlen müssen Sleeps (oder besser Msleeps) kommen

ich werde es entsprechend ändern, sobald ich das tasterproblem gelöst habe.

s.o.
31.10.2007, 14:20
Hallo

Der klassische Fehler!
If (CStrecke=LengeHof) {
Richtig:
If (CStrecke==LengeHof) {

Gruß