Archiv verlassen und diese Seite im Standarddesign anzeigen : ASURO-Programm funkt nicht
Stefan88
16.01.2006, 22:33
Hallo,
ich habe meinen Asuro erst seit einigen Tagen und bis jetzt funktioniert alles wunderbar. Ich habe nun ein ganz simples Programm für den Asuro geschrieben, das ihn geradeaus fahren lässt und bei einer Kollision den Rückwartsgang einlegt, sich dreht und dann weiter geradeaus fährt.
Ich bekomme das Programm aber einfach nicht richtig zum Laufen.
Würde mich mich über jede Hilfe freuen.
Hier ist der Quellcode:
#include "asuro.h"
int main(void)
{
unsigned int zaehler;
Init ();
while(1)
{
MotorDir(FWD,FWD);
MotorSpeed(150,150);
while(PollSwitch==0)
{}
zaehler=0;
while(zaehler<65000)
{zaehler++;
MotorDir(RWD,RWD);
MotorSpeed(150,150);}
zaehler=0;
while(zaehler<30000)
{zaehler++;
MotorDir(FWD,RWD);
MotorSpeed(150,150);}
}
return 0;
}
Danke schon im Vorraus!!
m.a.r.v.i.n
17.01.2006, 15:26
Hallo Stefan88,
so sollte es eigentlich funktionieren:
...
while(1)
{
MotorDir(FWD,FWD);
MotorSpeed(150,150);
if(PollSwitch() != 0)
{
zaehler=0;
while(zaehler<65000)
{
zaehler++;
MotorDir(RWD,RWD);
MotorSpeed(150,150);
}
zaehler=0;
while(zaehler<30000)
{
zaehler++;
MotorDir(FWD,RWD);
MotorSpeed(150,150);
}
}
}
...
Gruß Peter
Hallo,
habe ein kleines Problem.
Und zwar:
Mein Asuro soll einer Linie folgen und bei Kollision soll er ein Stück zurücksetzen und sich dann um 180° drehen.
Nun macht er aber folgendes:
Der Asuro folgt der Linie (soweit OK!), bei Kollision setzt er ein Stück zurück (auch OK!) und dann dreht er sich, und dreht, und dreht, und dreht...
Und hört gar nicht mehr auf sich zu drehen...
Kann mir vielleicht jemand bei dem Problem helfen?
Hier noch mein derzeitiges Programm:
#include "asuro.h"
int main(void) {
unsigned int data[2];
unsigned int zaehler;
unsigned int p1;
unsigned int p2;
unsigned int p3;
unsigned int p4;
unsigned int p5;
unsigned int p6;
unsigned int p7;
unsigned int p8;
unsigned int p9;
Init();
FrontLED(ON);
MotorDir(FWD,FWD);
while(1){
LineData(data);
if (data [0] > data [1] )
{MotorSpeed(200,150); BackLED(ON,OFF); StatusLED(GREEN);}
else
{MotorSpeed(150,200); BackLED(OFF,ON); StatusLED(RED);}
p1=PollSwitch();
p2=PollSwitch();
p3=PollSwitch();
p4=PollSwitch();
p5=PollSwitch();
p6=PollSwitch();
p7=PollSwitch();
p8=PollSwitch();
p9=PollSwitch();
if(p9 != 0)
{
zaehler=0;
while(zaehler<65000)
{
zaehler++;
MotorDir(RWD,RWD);
MotorSpeed(150,150);
}
zaehler=0;
while(zaehler<10000)
{
zaehler++;
MotorDir(FWD,RWD);
MotorSpeed(150,150);
}
}
}
return 0;
}
Gruß
InfoPC
ich kann kein c *schäm* aber ich vermute mal dass dein zähler nicht korrekt auf null gesetzt wird.... dadurch könnte es in der while-schleife zu einer endlosschleife kommen, weil er wert initial schon über 10000 ist. versuch doch mal ne zweite zähler-variable für die drehung einzuführen. ansonsten..... muss du evtl zaehler:=0 schreiben??? *vermut*
bitte entschuldigt die unqualifizierte antwort. hatte langeweile! :)=
m.a.r.v.i.n
10.02.2006, 12:57
Hallo InfoPC
Hinter dem if(p9 != 0) Block, fehlt noch ein else Zweig. (Wenn kenn Schalter gedrückt)
dann soll der Bot wieder vorwärts fahren.
Oder du fügst noch MotorDir(FWD,FWD), in beide Liniensensor Abfragen ein.
...
else
{
MotorDir(FWD,FWD);
}
}
return 0;
}
Gruß m.a.r.v.i.n
Hallo Goblin,
danke für Deine Antwort, aber zaehler=0; steht ja schon drin... ;)
Trotzdem Danke!
Hallo m.a.r.v.i.n,
auch Dir danke ich für Deine Antwort! ;)
Jetzt läuft es, 180° Drehungund wieder vorwärts! - Danke! :D
Gruß
InfoPC
ich meinte (in worten) zaehler doppelpunkt gleich null semikolon. es gibt nämlich durchaus sprachen, bei denen die syntax sowas verlangt! :) aber schön dass es jetzt funktioniert.
Hallo an alle,
Den Quellcode muss man doch mim Tool make zusammen machen,oder ?
Wenn ich nähmlich den Quellcode bei test.c verändere un dann mim tool make zusammen mache, steht dann immer wieder der Quellcode vom Anfang (den ich noch nicht geändert habe)da, ist das normal oder mach ich was falsch ?
Gruß
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.