Hallo
Keine Sorge wegen deines Codes, jeder hier hat mal klein angefangen.
Zu deinem Problem:
Möglicherweise verhindert die blockierende Ausführung von Move und Rotate, dass die Bumber neu eingelesen werden können. Wenn man das Task-System verwendet, sollte man blockierende Funktionen vermeiden.
Anstelle des "true" verwendet man dann besser diese Funktion:
uint8_t isMovementComplete(void)
und der Code würde dann etwa so aussehen:
Code:
...
if(bumper_left)
{setLEDs(0b111111);
move(50, BWD, DIST_MM(100), false);
while (!isMovementComplete()) task_RP6System();
setLEDs(0b001111);
rotate(90, RIGHT, 70, false);
while (!isMovementComplete()) task_RP6System();
setLEDs(0b001001);
}
...
So ist gewährleistet, dass alle Task-Funktionen weiterhin ausgeführt werden.
Gruß
mic
Lesezeichen