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:
Code:
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;
}
Vielen Dank