danke für dein antwort,
also ich habe 3 quadranten, wo die Koordx=xnull, <xnull bewegt sich der arm nach links und >xnull nach rechts und so sieht mein code aus
Code:int decide (void) { if(Koordx == xnull) Decision = 0; if (Koordx < xnull ) Decision = 1; //2ten Quadrant else if (Koordx > xnull) Decision = 2; //1ten Quadrant return Decision }
das ist ein bsp für die drehung links:
Ich hab dir ein paar Code-Tags aus meinem privaten Vorräten gespendet. Sieht doch einfach übersichtlicher aus (PicNick, Mod)Code:void execute(void) { int m; switch(Decision) { case1 GPIO7->DR[0xFF*4] = 0x10; // P7.4 Drehung rechts zeit2(Koordx,Koordy); GPIO7->DR[0xFF*4] = 0x0C; //P7.2 & P7.3 Unterarm nach unten zeit3(Koordx,Koordy); GPIO7->DR[0xFF*4] = 0x40; //P7.6 Greifer Auf zeit2(Koordx,Koordy); GPIO7->DR[0xFF*4] = 0x01; //P7.0 Oberarm nach unten zeit4(Koordx,Koordy); GPIO7->DR[0xFF*4] = 0xc0; //P7.7 Greifer zu zeit2(Koordx,Koordy); GPIO7->DR[0xFF*4] = 0x00; // Stop for (m=0; m<10000000; m++); GPIO7->DR[0xFF*4] = 0x03 ; // Oberarm nach oben zeit5(Koordx,Koordy); zeit5(Koordx,Koordy); GPIO7->DR[0xFF*4] = 0x04 ; // Unterarm nach oben zeit6(Koordx,Koordy); GPIO7->DR[0xFF*4] = 0x00; // Stop break; }
wenn du siehst ich hab den selben zeit für die drehung rechts oder links für den greifer genommen und es funktioniert rechts und links nur bei Koordx=xnull funktioniert nicht, hast du vieleicht ein vorschlag oder soll ich ein timer programm schreiben unabhängig von der Koord.
übrigens der Arm geht max 5cm auf.







Zitieren

Lesezeichen