Checker 1.0
20.05.2012, 16:58
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:
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
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:
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