du musst halt nach rotate wieder moveAtSpeed machen
Der Roboter fährt geradeaus. Nach 3 Sekunden wendet er um 90Grad nach links, dreht sich dann aber immer im Kreis weiter. (also er fährt nur noch links).Zitat von roboter14
Grüße
Warum bitte? Wenn das C sein soll, dann ist das korrekt!Zitat von Martinius11
Wenn der Counter 3 Sekunden erlangt hat, dreht sich der Roboter nach Links (90 Grad). Dann wird der Counter auf 0 gesetzt. Die Programm ausführung springt wieder zur task_motionControl(), da wir uns in einer while (true) Schleife befinden. Dann wird das moveAtSpeed(70, 70) ausgeführt und nach 3 Sekunden fallen wir wieder in den IF Zweig.Code:task_motionControl(); task_ADC(); moveAtSpeed(70, 70); startStopwatch1(); if (getStopwatch1() > 3000) { rotate(70, LEFT, 90, true); setStopwatch1(0); }
Grüße
Hi RoboNull,
probiers mal hiermit:
gruß FabiCode:#include "RP6RobotBaseLib.h" void hinderniss(void) { if (!obstacle_left && !obstacle_right && !bumper_left && !bumper_right) // Wenn nichts vorliegt ... { changeDirection(FWD); moveAtSpeed(75,75); } if (obstacle_left && obstacle_right) // Wurde ein hinderniss erkannt ... { move(80, BWD, DIST_MM(200), BLOCKING); // ... 200mm mit der Geschwindichkeit 80 zurückfahren rotate(80, RIGHT, 45, BLOCKING); // ... um 45 grad nach Rechts drehen mit der Geschwindichkeit 80 } } int main(void) { initRobotBase(); powerON(); setACSPwrMed(); // ACS auf Normale Entfernung while(true) { hinderniss(); task_RP6System(); } return 0; }
Lesezeichen