Hallo
Es wird immer der else-Zweig ausgeführt, weil obstacle_left und obstacle_right vom Tasksystem gesetzt werden, wenn etwas im Blickfeld erscheint:
Code:
// Prüfe, ob xxxx eine Öffnung ist
task_ACS();
if (obstacle_left && obstacle_right)
(ungetestet)
Tasksystem direkt vor der Abfrage der Variablen könnte funktionieren. Das ACS muss man auch noch initialisieren:
Code:
enableACS();
//setACSPwrLow();
setACSPwrMed();
//setACSPwrHigh();
Das sollte noch irgendwo vor der While()-Schleife erledigt werden.
Gruß
mic
[Edit]
Das wird so auch nicht funktionieren, weil der ACS-Task mehrere Aufrufe benötigt. Der Task funktioniert wie eine Schrittkette:
#define ACS_STATE_IDLE 0
#define ACS_STATE_IRCOMM_DELAY 1
#define ACS_STATE_SEND_LEFT 2
#define ACS_STATE_WAIT_LEFT 3
#define ACS_STATE_SEND_RIGHT 5
#define ACS_STATE_WAIT_RIGHT 6
Vermutlich mußt du auf das Blocking verzichten und die Bewegungen mit dem Tasksystem ausführen:
https://www.roboternetz.de/community...eAtSpee-Befehl
Lesezeichen