hi Dirk,
schwindelig sicher nicht, er dreht ja hin und her , allerdings beim ändern des blocking-parameters dreht er nur einmal und bleibt stehen. Im handbuch:
Code:
An diesem Beispiel sieht man, wie die beiden Funktionen benutzt werden können:
#include "RP6RobotBaseLib.h"
int main(void)
{
initRobotBase();
setLEDs(0b111111);
mSleep(1500);
powerON(); // Encoder und Motorstromsensoren anschalten!
}
while(true)
{
setLEDs(0b100100);
move(60, FWD, DIST_MM(300), true); // 30cm Vorwärts fahren
setLEDs(0b100000);
rotate(50, LEFT, 180, true); // um 180° nach links drehen
setLEDs(0b100100);
move(60, FWD, DIST_MM(300), true); // 30cm Vorwärts fahren
setLEDs(0b000100);
rotate(50, RIGHT, 180, true); // um 180° nach rechts drehen
}
return 0;
Hier fährt der Roboter zunächst 30cm Vorwärts, dreht dann um 180° nach links, fährt die 30cm zurück,
dreht um 180° nach rechts und das Spiel beginnt von neuem.
Würde man den blocking Parameter von allen Funktionen false anstatt true setzen,
würde das Programm überhaupt nicht funktionieren, da aus der Main Funktion nicht die task_motionControl Funktion
aufgerufen wird und alle Funktionsaufrufe direkt hintereinander stehen.
Ändert man auch nur einen der blocking Parameter in false um, wird das Programm ebenfalls nicht mehr
wie gewünscht funktionieren – es wird dann eine der Bewegungsphasen komplett übersprungen.
Für solche rein sequentiellen Abläufe muss man den blocking Parameter also immer auf true setzen!
das würde den abbruch der drehungen nach der ersten drehung erklären, es wird auch wieder die "task_motionControl Funktion" erwähnt. Wird die automatisch in dem base-slave-programm aufgerufen?
Lesezeichen