Hallo
Mit zwei Servos könnte es etwa so funktionieren:
Code:
void bumpersStateChanged(void)
{
DDRA |= (E_INT1); // PA4 (IT1) als Ausgang definieren
DDRC |= (SCL | SDA); // PC0, PC1 als Ausgänge definieren
uint8_t i; // Variable i
uint8_t a; // Variable a
uint8_t c; // Variable c
//PORTA |= E_INT1;
if(bumper_left)
{
for(a=0; a<5; a++)
{
for(i=0; i<70; i++)
{
PORTA |= E_INT1; // Impuls Servo 1 an
sleep(7);
PORTA &= ~E_INT1; // Impuls Servo 1 aus
PORTC |= SCL; // Impuls Servo 2 an (Position 23 halten)
sleep(23);
PORTC &= ~SCL; // Impuls Servo 2 aus
mSleep(15);
}
for(c=0; c<70; c++)
{
PORTA |= E_INT1; // Impuls Servo 1 an
sleep(15);
PORTA &= ~E_INT1; // Impuls Servo 1 aus
PORTC |= SCL; // Impuls Servo 2 an (Position 23 halten)
sleep(23);
PORTC &= ~SCL; // Impuls Servo 2 aus
mSleep(15);
}
for(i=0; i<70; i++)
{
PORTA |= E_INT1; // Impuls Servo 1 an
sleep(23);
PORTA &= ~E_INT1; // Impuls Servo 1 aus
PORTC |= SCL; // Impuls Servo 2 an (Position 23 halten)
sleep(23);
PORTC &= ~SCL; // Impuls Servo 2 aus
mSleep(15);
}
}
}
else
{
for(a=0; a<5; a++)
{
for(i=0; i<70; i++)
{
PORTC |= SCL; // Impuls Servo 2 an
sleep(7);
PORTC &= ~SCL; // Impuls Servo 2 aus
PORTA |= E_INT1; // Impuls Servo 1 an (Position 23 halten)
sleep(23);
PORTA &= ~E_INT1; // Impuls Servo 1 aus
mSleep(15);
}
for(c=0; c<70; c++)
{
PORTC |= SCL; // Impuls Servo 2 an
sleep(15);
PORTC &= ~SCL; // Impuls Servo 2 aus
PORTA |= E_INT1; // Impuls Servo 1 an (Position 23 halten)
sleep(23);
PORTA &= ~E_INT1; // Impuls Servo 1 aus
mSleep(15);
}
for(i=0; i<70; i++)
{
PORTC |= SCL; // Impuls Servo 2 an
sleep(23);
PORTC &= ~SCL; // Impuls Servo 2 aus
PORTA |= E_INT1; // Impuls Servo 1 an (Position 23 halten)
sleep(23);
PORTA &= ~E_INT1; // Impuls Servo 1 aus
mSleep(15);
}
}
}
if(bumper_right) // ???
{
PORTC |= SDA; // PC1 high
mSleep(2000);
PORTC &= ~SDA; // PC1 lo
}
}
Allerdings werden die Servos nur angesteuert, wenn ein Bumper betätigt wird. Und während sich die Servos bewegen ist das gesamte restliche System blockiert. Langfristig wirst du wohl auf eine interruptgesteuerte Servoansteuerung umsteigen müssen. Anregungen dazu findest du z.b. hier:
https://www.roboternetz.de/phpBB2/viewtopic.php?t=34407
Gruß
mic
Lesezeichen