delay(10000);
digitalWrite(EN321_PIN, LOW);
digitalWrite(EN4_PIN, LOW);
digitalWrite(EN5_PIN, LOW);
digitalWrite(EN6_PIN, LOW);
delay(1000);
// go to the home position (all joints equal to 0)
// joint #2
digitalWrite(DIR2_PIN, HIGH);
int delValue=4000;
int incValue = 7;
int accRate=530;
int totSteps=2791*2;
for (int i=0; i < totSteps; i++)
{
if (totSteps > (2*accRate + 1)){
if (i < accRate){
//acceleration
delValue = delValue - incValue;
} else if (i > (totSteps - accRate)){
//decceleration
delValue = delValue + incValue;
}
} else {
//no space for proper acceleration/decceleration
if (i < ((totSteps - (totSteps % 2))/2)){
//acceleration
delValue = delValue - incValue;
} else if (i > ((totSteps + (totSteps % 2))/2)){
//decceleration
delValue = delValue + incValue;
}
}
digitalWrite(PUL2_PIN, HIGH);
delayMicroseconds(delValue);
digitalWrite(PUL2_PIN, LOW);
delayMicroseconds(delValue);
}
// joint #3
digitalWrite(DIR3_PIN, HIGH);
delValue=4000;
incValue=7;
accRate=530;
totSteps=6569;
for (int i=0; i < totSteps; i++)
{
if (totSteps > (2*accRate + 1)){
if (i < accRate){
//acceleration
delValue = delValue - incValue;
} else if (i > (totSteps - accRate)){
//decceleration
delValue = delValue + incValue;
}
} else {
//no space for proper acceleration/decceleration
if (i < ((totSteps - (totSteps % 2))/2)){
//acceleration
delValue = delValue - incValue;
} else if (i > ((totSteps + (totSteps % 2))/2)){
//decceleration
delValue = delValue + incValue;
}
}
digitalWrite(PUL3_PIN, HIGH);
delayMicroseconds(delValue);
digitalWrite(PUL3_PIN, LOW);
delayMicroseconds(delValue);
}
// joint #5
digitalWrite(DIR5_PIN, HIGH);
delValue=4000;
incValue=7;
accRate=530;
totSteps=90/dl5;
for (int i=0; i < totSteps; i++)
{
if (totSteps > (2*accRate + 1)){
if (i < accRate){
//acceleration
delValue = delValue - incValue;
} else if (i > (totSteps - accRate)){
//decceleration
delValue = delValue + incValue;
}
} else {
//no space for proper acceleration/decceleration
if (i < ((totSteps - (totSteps % 2))/2)){
//acceleration
delValue = delValue - incValue;
} else if (i > ((totSteps + (totSteps % 2))/2)){
//decceleration
delValue = delValue + incValue;
}
}
digitalWrite(PUL5_PIN, HIGH);
delayMicroseconds(delValue);
digitalWrite(PUL5_PIN, LOW);
delayMicroseconds(delValue);
}
//--------------------------------------------------------GoGoGo-------------------
curPos1=0.0;
curPos2=0.0;
curPos3=0.0;
curPos4=0.0;
curPos5=90.0;
curPos6=0.0;
float Xhome[6]={164.5, 0.0, 241.0, 90.0, 180.0, -90.0}; //{x, y, z, ZYZ Euler angles}
float X1[6]={164.5, 0.0, 141.0, 90.0, 180.0, -90.0};
float X11[6]={164.5+14.7, 35.4, 141.0, 90.0, 180.0, -90.0};
float X12[6]={164.5+50.0, 50.0, 141.0, 90.0, 180.0, -90.0};
float X13[6]={164.5+85.3, 35.4, 141.0, 90.0, 180.0, -90.0};
float X14[6]={164.5+100.0, 0.0, 141.0, 90.0, 180.0, -90.0};
float X15[6]={164.5+85.3, -35.4, 141.0, 90.0, 180.0, -90.0};
float X16[6]={164.5+50.0, -50.0, 141.0, 90.0, 180.0, -90.0};
float X17[6]={164.5+14.7, -35.4, 141.0, 90.0, 180.0, -90.0};
float X18[6]={164.5+50.0, 0.0, 141.0, 90.0, 180.0, -90.0};
float X2[6]={264.5, 0.0, 141.0, 0.0, 90.0, 0.0};
float X3[6]={164.5, 100.0, 141.0, 90.0, 90.0, 0.0};
float X4[6]={164.5, -100.0, 141.0, 90.0, -90.0, 0.0};
float Jhome[6], J1[6], J11[6], J12[6], J13[6], J14[6], J15[6], J16[6], J17[6], J18[6], J2[6], J3[6], J4[6];
InverseK(Xhome, Jhome);
InverseK(X1, J1);
InverseK(X11, J11);
InverseK(X12, J12);
InverseK(X13, J13);
InverseK(X14, J14);
InverseK(X15, J15);
InverseK(X16, J16);
InverseK(X17, J17);
InverseK(X18, J18);
InverseK(X2, J2);
InverseK(X3, J3);
InverseK(X4, J4);