Hallo,
ich bin grad an einem größeren Projekt und scheiter leider gerade beim Ansteuern von 2 meiner 3 Servos.
Über den ADC0 funktioniert es gut, aber über die SCL und SDA Ausgänge wills nicht klappen.
Ich hab die Lib schon entsprechend umgeändert, hier mein Programm:
Vielen DankCode: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) { static unsigned int counter = 0; static char position = 0; initRobotBase(); PositionServo(0,POSITION_MITTE); PositionServo(1,POSITION_MITTE); PositionServo(2,POSITION_MITTE); DDRA |= 1; DDRC |= 3; setLEDs(0b111111); mSleep(500); setLEDs(0b001001); BUMPERS_setStateChangedHandler(bumpersStateChanged); ACS_setStateChangedHandler(acsStateChanged); powerON(); setACSPwrMed(); while(true) { task_RP6System(); changeDirection(FWD); moveAtSpeed(80,80); counter = counter + 1; if (counter > 40000) { counter = 0; if(position > 3) { position = 0; } switch(position) { case 0: PositionServo(0,7); PositionServo(1,7); PositionServo(2,7); break; case 1: PositionServo(0,23); PositionServo(1,23); PositionServo(2,23); break; case 2: PositionServo(0,7); PositionServo(1,7); PositionServo(2,7); break; case 3: PositionServo(0,23); PositionServo(1,23); PositionServo(2,23); break; default: PositionServo(0,POSITION_MITTE); PositionServo(1,POSITION_MITTE); PositionServo(2,POSITION_MITTE); break; } position = position + 1; } } return 0; }







Zitieren

Lesezeichen