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:
Code:
#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;
}
sry, ich wusste nichmehr ob es wrong oder false ist, also hab ich ne 0 verwendet, das ist das gleiche
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
Code:
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);}
}
genau 2 Sekunden lang fahren lassen
/*ich hoffe, ich hab nix vergessen, in dem kleinen Kurz Antwort Fenster ist das so unübersichtlich...*/
naja, viel Spass noch!!
MfG Pr0gm4n
Lesezeichen