Hallo
Mit zwei Servos könnte es etwa so funktionieren:
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: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 } }
https://www.roboternetz.de/phpBB2/viewtopic.php?t=34407
Gruß
mic







Zitieren

Lesezeichen