PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : asuro lib v3.0 Verständnisfragen zur Anwendung von Travel



flaxo
27.11.2006, 22:23
hallo!

ich versuche grade mit hilfe der asuro lib v3.0 ein paar einfache bewegungen aus meinem bot herauszubekommen...

#include "asuro.c"

int main(void)
{
Init();
EncoderInit();
Travel(40,100);
return 0;
}


soweit lief das auch wie erwartet, allerdings wollte ich danch durch hinzufügen von


#include "asuro.c"

int main(void)
{
Init();
EncoderInit();
Travel(40,100);
Rotate(-90,100);
return 0;
}

eine drehung erreichen was voll in die hose ging... asuro fährt immer munter mit gleichbleibender geschwindigkeit grade aus. absurder weise funktioniert die drehung alleine wie erwartet.

nun die preisfrage ist das ein verständnisproblem meinerseits? hab ich was komplett verbockt??

vielen dank!

m.a.r.v.i.n
28.11.2006, 09:22
Hi,

als erstes würde ich mal noch eine Endlosschleife

...
while(1);
return 0;
}

am Ende der main Routine setzen.
Sonst macht der Controller irgendwelchen Müll.

Gruß m.a.r.v.i.n

der_andi
28.11.2006, 21:56
Ich würds mal auf die Odometrie schieben, nix als Scherereien mit dem Mistding.

flaxo
28.11.2006, 22:02
naja die odometrie kanns ja auch nicht alleine sein, denn wie gesagt wenn ich die "fahre 40cm" routine alleine drin habe macht er was er soll: er fährt schön grade 40cm grade aus...

die odometrie ist eigentlich auch super abgeschirmt und gepimpt ;) und hat eigentlich schon ihre funktionstüchtigkeit bewiesen..

das problem stellt sich erst dann ein, wenn ich versuche mehrere routienen zu kombinieren, daher hoffe ich auch immer noch, dass es an mir liegt ;)

@marvin: die while schleife hat es leider auch nicht gebracht...

damaltor
28.11.2006, 23:20
die while schleife ist sehr wichtig, es könnte sonst passieren dass alte programme, die noch im flash sin ausgeführt werden. diese werden nämlich nicht gelöscht, sondern nur durch das neue prog überschrieben. und wenn das alte prog länger war, dann kann sowas passieren.

probier mal vor turn (oder rotate, wie es jetzt ja heisst) nochmal encoder_init() oder Encoder_Set(0,0) aufzurufen.