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:
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;
}
Ich hab dir ein paar Code-Tags aus meinem privaten Vorräten gespendet. Sieht doch einfach übersichtlicher aus (PicNick, Mod)
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.
Lesezeichen