Hi,
nein, nicht ganz, da wenn ich das richtig verstanden habe mit dem TRUE am ende in den Klammern bei Fahrbefehlen die blockierende Funktion auf ON gesetzt wird, d.h., dass er zuerst 1m fährt, dann guckt, was die Stopwatch sagt und dann wieder in die while-Schleife zurückkehrt.
es guckt glaub ich so aus:
sry, ich wusste nichmehr ob es wrong oder false ist, also hab ich ne 0 verwendet, das ist das gleicheCode:#include "RP6RobotBaseLib.h" int main(void) { initRobotBase(); // Mikrocontroller initialisieren powerON(); //Sensoren etc. an move(60,FWD,DIST_MM(1000),0); //losfahren startStopwatch1(); //Stopwatch starten while(true) { //hier also kein move if(getStopwatch1()>2000) //Stopwatch checken {moveAtSpeed(0,0); //nichmehr fahren setStopwatch1(0);} //stopwatch zurücksetzen task_RP6System(); //Robbys System abfragen } return 0; }
Ach ja, ich würde dir empfehlen für zeitgesteuerte Sachen immer
moveAtSpeed(leftspeed,rightspeed);
zu verwenden. Damit hast du dann die blockierende Funktion nie drin und dein Timing funktioniert auch.
Theoretisch könntest du ihn mit
genau 2 Sekunden lang fahren lassenCode:void zeitFahren(int zeit_x, int speed_x, int speed_y){ int zeit_x, speed_x, speed_y; if(getStopwatch1()<zeit_x){ moveAtSpeed(speed_x,speed_y); mSleep(1) moveAtSpeed(0,0); } if(getStopwatch1<zeit_x){ zeit_x--; zeitFahren(zeit_x, speed_x, speed_y);} }
/*ich hoffe, ich hab nix vergessen, in dem kleinen Kurz Antwort Fenster ist das so unübersichtlich...*/
naja, viel Spass noch!!
MfG Pr0gm4n







Zitieren

Lesezeichen