so dirk, jetzt bin ich bei der programmierung meines 5-achs-armes, wo deine lib ja die hauptrolle spielt angekommen.
allerdings stehe ich vor einem ersten problem. kann es sein, dass die servoansteuerung mit deiner lib nicht korrekt funktioniert, wenn man mehrere Servos gleichzeitig ansteuert?
hier mein programm:
wenn ein teil erkannt wird, wird der greifer geschlossen (bis dahin funktioniert das programm), allerdings sollten dann nach 2sekunden verzögerung die Servos 3 und 4 den arm nach oben fahren lassen. das geschieht leider nie, obwohl im terminal "Arm hoch" angezeigt wird. der greifer soll die ganze zeit über an seinen linken anschlag takten (das funktioniert auch schon).Code://Servo 1 => PC2 //Servo 2 => PC3 //Servo 3=> PC4 //Servo 4=> PC5 //Servo 5=> PC6 //Reflexkoppler => PD6 uint8_t a; void task_teil_erkannt(void) {if (PIND & (1<<6)) {setStopwatch3(0); a=1; writeString_P("kein Teil erkannt\n");} else {a=0; writeString_P("Teil erkannt\n"); initSERVO(SERVO1); startStopwatch3(); } } void task_servoansteuerung(void) {if (a==0 && getStopwatch3() >0) { servo1_position = 0; writeString_P("Greifer zu\n"); } if (a==0 && getStopwatch3() > 2000 ) {initSERVO(SERVO3|SERVO4); servo3_position = MIDDLE_POSITION; servo4_position = 50; writeString_P("Arm hoch\n");} } int main(void) { initRP6Control(); DDRD &=~ (1<<6); //Eingang für Reflexkoppler startStopwatch2(); while(true) {task_servoansteuerung(); task_teil_erkannt(); task_SERVO(); mSleep(3); } return 0; }
kannst du mir vielleicht sagen, an was das genau liegt?
danke schon mal im voraus
mfg andi







Zitieren

Lesezeichen