Ohne die Sleeps funktioniert´s auch nicht:
Code:
#include "RP6RobotBaseLib.h"
uint8_t rc5command;
uint8_t obstrue;
uint8_t SPEEDset;
void RC5_COMMAND(RC5data_t rc5data)
{
rc5command = rc5data.key_code;
}
/*void ACS_EVENT_HANDLER(void)
{
if(obstacle_left || obstacle_right)
{
changeDirection(RIGHT);
writeString_P("!\n");
while(true)
{
if(!obstacle_left && !obstacle_right)
{
changeDirection(FWD);
break;
}
}
}
}*/
void ACS_EVENT_HANDLER(void)
{
obstrue = 1;
}
int main(void)
{
initRobotBase();
powerON();
setACSPwrHigh();
/*ACS_setStateChangedHandler(ACS_EVENT_HANDLER);*/
IRCOMM_setRC5DataReadyHandler(RC5_COMMAND);
uint8_t SPEED = 45;
while(true)
{
task_motionControl();
task_ACS();
if(rc5command > 0)
{
switch(rc5command)
{
case 32: // Vorwärtstaste
changeDirection(FWD); //Vorwärtsfahren
break;
case 33: //Rückwärtstaste
changeDirection(BWD); //Rückwärtsfahren
break;
case 17: //Volume -
changeDirection(LEFT);
break;
case 16: //Volume +
changeDirection(RIGHT);
break;
case 34: //SFI
if(SPEED < 160)
{
SPEED += 10; //Geschwindigkeit erhöhen
}
break;
case 47: //Swap
if(SPEED > 10)
{
SPEED -= 10; //Geschwindigkeit erniedrigen
}
break;
case 12: //OFF-Taste (Funktioniert noch nicht richtig)
SPEEDset = 0;
if(SPEED > 0) //Wenn Geschwindigkeit > 0
{
SPEED = 0;//setze Geschwindigkeit auf 0
SPEEDset = 1;
}
else if(SPEED == 0 && SPEEDset == 0)//Wenn Geschwindigkeit gleich 0
{
SPEED = 45;//Setze Geschwindigkeit auf 45
}
}
moveAtSpeed(SPEED,SPEED);
task_motionControl();
rc5command = 0;
if(obstrue == 1)
{
changeDirection(RIGHT);
startStopwatch1();
while(true)
{
task_motionControl();
if(getStopwatch1() >= 100)
{
changeDirection(FWD);
setStopwatch1(0);
break;
}
}
obstrue = 0;
}
}
}
}
Lesezeichen