Ich habe eben mal zugeschaut ob alle meine Schleifen, etc. durchlaufen werden. (In dem Terminal). Habe bei jeder If-Abfrage einfach einen String ausgegeben.
Und siehe da, ich bin gar nicht so blöd.
Er führt das alles im Sekundenrythmus aus, wie er es auch soll. Nur leider macht er nichts. Er hält weder an, noch dreht er sich. Er fährt einfach weiter. 
Code:
#include "RP6RobotBaseLib.h"
void bumpersStateChanged(void)
{
if(bumper_left)
{
startStopwatch1();
uint8_t counter = 1;
while(true)
{
if(getStopwatch1() > 1000)
{
if(counter == 1)
{
moveAtSpeed(0,0);
writeString_P("#### 1");
}
if(counter == 2)
{
changeDirection(BWD);
moveAtSpeed(50,50);
writeString_P("#### 2");
}
if(counter == 3)
{
moveAtSpeed(0,0);
writeString_P("#### 3");
}
if(counter == 4)
{
changeDirection(FWD);
moveAtSpeed(80,30);
writeString_P("#### 4");
}
if(counter == 5)
{
moveAtSpeed(0,0);
writeString_P("#### 5");
}
if(counter == 6)
{
moveAtSpeed(50,50);
writeString_P("#### 6");
}
if(counter == 7)
{
stopStopwatch1();
exit;
writeString_P("#### 7");
}
counter++;
setStopwatch1(0);
}
}
}
if(bumper_right)
{
}
}
int16_t main(void)
{
initRobotBase();
setLEDs(0b111111);
mSleep(1000);
setLEDs(0b001001);
ACS_setStateChangedHandler(acsStateChanged);
BUMPERS_setStateChangedHandler(bumpersStateChanged);
powerON();
setACSPwrMed();
// setACSPwrLow(); // Low power
// setACSPwrHigh(); // High Power
// setACSPwrOff(); to turn it off completely!
changeDirection(FWD);
moveAtSpeed(50,50);
while(true)
{
task_RP6System();
}
return 0;
}
Ist das jetzt ein Problem mit den Stopwatches oder liegt das eher an einem anderen Problem in meinem Code? Sicherlich nicht sehr elegant gelöst, aber das war immerhin meine 8. Idee oder so das zu realisieren, nachdem die 7 davor auch nicht gingen.
Lesezeichen