Also, meine Überlegung ist jetzt momentan, ihn das ganze mit dem ACS machen zu lassen. Er soll sich auf jedem Feldchen einmal nach links umschauen und bei Möglichkeit abbiegen. Wenn vorne, links und rechts blockiert ist, soll er umdrehen.
Jetzt habe ich aber ein Problem mit meinem Code.
Wieso wird immer das aus "ELSE {}" gemacht?
Code:
// Includes:
#include "RP6RobotBaseLib.h"
uint8_t acs_bool = 0;
// Main:
void acsStateChanged(void)
{
//Nix.
}
int main(void)
{
initRobotBase();
setLEDs(0b111111);
mSleep(2500);
powerON(); // Strom für alle Systeme wie ACS, Bumper und die LEDs
ACS_setStateChangedHandler(acsStateChanged);
// Main loop
while(true)
{
setLEDs(0b100100);
//LEDs setzen
setLEDs(0b111001);
updateStatusLEDs();
// Prüfe, ob links eine Öffnung ist
if (obstacle_left && obstacle_right)
{
// LEDs setzen
setLEDs(0b001111);
updateStatusLEDs();
// Rotiere wieder zurück in gerade Position
rotate(40, RIGHT, 90, BLOCKING);
//LEDs setzen
setLEDs(0b001001);
updateStatusLEDs();
// Prüfe, ob vorne ein Hindernis ist
if (obstacle_left && obstacle_right)
{
// LEDs setzen
setLEDs(0b001111);
updateStatusLEDs();
// Rotiere rechts
rotate(40, RIGHT, 90, BLOCKING);
//LEDs setzen
setLEDs(0b111001);
updateStatusLEDs();
// Prüfe, ob rechts ein Hindernis ist
if (obstacle_left && obstacle_right)
{
// LEDs setzen
setLEDs(0b001111);
updateStatusLEDs();
// Rotiere rechts
rotate(40, RIGHT, 90, BLOCKING);
//LEDs setzen
setLEDs(0b111001);
updateStatusLEDs();
} else { move(50, FWD, DIST_MM(250), BLOCKING);}
} else { move(50, FWD, DIST_MM(250), BLOCKING);}
} else { move(50, FWD, DIST_MM(250), BLOCKING);}
}
return 0;
}
Das verstehe ich nicht :O
Danke schonmal!
Lesezeichen