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; } } } }






Zitieren

Lesezeichen