Danke
Will jetzt das Rudermaschinenansteuerungsprogramm in mein normales "Gerade Fahren und Hindernissen ausweichen" Programm intigrieren.
Hatte auch grundsätzlich gut geklappt, nur mein ACS funktioniert dann nicht mehr.
Hier meine Programme:
mein geradeausfahr und hindernissen ausweichen programmCode:#include "RP6RobotBaseLib.h" void acsStateChanged(void) { if(obstacle_left) rotate(80, RIGHT, 50, true); if(obstacle_right) rotate(80, LEFT, 50, true); if(obstacle_right && obstacle_left) rotate(60, RIGHT, 100, true); } void bumpersStateChanged(void) { if(bumper_left || bumper_right) { changeDirection(BWD); move(100, BWD, DIST_MM(200), true); rotate(50, RIGHT, 120, true); } } int main(void) { initRobotBase(); setLEDs(0b111111); mSleep(500); setLEDs(0b001001); BUMPERS_setStateChangedHandler(bumpersStateChanged); ACS_setStateChangedHandler(acsStateChanged); powerON(); setACSPwrLow(); while(true) { task_RP6System(); changeDirection(FWD); moveAtSpeed(80,80); } return 0; }
mein RudermaschinenansteuerungsprogrammCode:#include "RP6RobotBaseLib.h" uint8_t i; int main(void) { initRobotBase(); DDRA |= 1; setLEDs(0b010101); mSleep(1000); setLEDs(0b101010); while(1) { for (i=0; i<50; i++) { PORTA |= 1; sleep(8); PORTA &= ~1; sleep(200-10); } mSleep(1000); for (i=0; i<50; i++) { PORTA |= 1; sleep(23); PORTA &= ~1; sleep(200-23); } } return(0); }
mein VersuchCode:#include "RP6RobotBaseLib.h" uint8_t i; void acsStateChanged(void) { if(obstacle_left) rotate(80, RIGHT, 50, true); if(obstacle_right) rotate(80, LEFT, 50, true); if(obstacle_right && obstacle_left) rotate(60, RIGHT, 100, true); } void bumpersStateChanged(void) { if(bumper_left || bumper_right) { changeDirection(BWD); move(100, BWD, DIST_MM(200), true); rotate(50, RIGHT, 120, true); } } int main(void) { initRobotBase(); setLEDs(0b111111); mSleep(500); setLEDs(0b001001); DDRA |= 1; BUMPERS_setStateChangedHandler(bumpersStateChanged); ACS_setStateChangedHandler(acsStateChanged); powerON(); setACSPwrLow(); while(1) { task_RP6System(); changeDirection(FWD); moveAtSpeed(100,100); setLEDs(1); for(i=0; i<50; i++) // 50 mal Servosignal für Position 1 senden { PORTA |= 1; sleep(8); // Impulslänge Position 1 (0,5ms) PORTA &= ~1; sleep(200-5); // Impulspause } setLEDs(2); mSleep(1000); // Pause 1 setLEDs(4); for(i=0; i<50; i++) // und 50 mal Servosignal für Position 2 senden { PORTA |= 1; sleep(23); // Impulslänge Position 2 (3ms?) PORTA &= ~1; sleep(200-30); // Impulspause } setLEDs(8); mSleep(1000); // Pause 2 } return(0); }
Was muss ich ändern, damit das ACS auch funktioniert?
Danke![]()
[/code]-Tags eingefügt von radbruch







Zitieren

Lesezeichen