#include <math.h>
#define PI 3.1415926535897932384626433832795
#define PUL1_PIN 39
#define DIR1_PIN 37
#define PUL2_PIN 43
#define DIR2_PIN 41
#define PUL3_PIN 47
#define DIR3_PIN 45
#define PUL4_PIN 46
#define DIR4_PIN 48
#define PUL5_PIN A6
#define DIR5_PIN A7
#define PUL6_PIN A0
#define DIR6_PIN A1
#define EN321_PIN 32
#define EN4_PIN A8
#define EN5_PIN A2
#define EN6_PIN 38
double curPos1 = 0.0;
double curPos2 = 0.0;
double curPos3 = 0.0;
double curPos4 = 0.0;
double curPos5 = 0.0;
double curPos6 = 0.0;
boolean PULstat1 = 0;
boolean PULstat2 = 0;
boolean PULstat3 = 0;
boolean PULstat4 = 0;
boolean PULstat5 = 0;
boolean PULstat6 = 0;
const double dl1 = 360.0/200.0/32.0/4.8;
const double dl2 = 360.0/200.0/32.0/4.0;
const double dl3 = 360.0/200.0/32.0/5.0;
const double dl4 = 360.0/200.0/32.0/2.8;
const double dl5 = 360.0/200.0/32.0/2.1;
const double dl6 = 360.0/200.0/32.0/1.0;
const double r1 = 47.0;
const double r2 = 110.0;
const double r3 = 26.0;
const double d1 = 133.0;
const double d3 = 0.0;
const double d4 = 117.50;
const double d6 = 28.0;
void setup()
{
pinMode(PUL1_PIN, OUTPUT);
pinMode(DIR1_PIN, OUTPUT);
pinMode(PUL2_PIN, OUTPUT);
pinMode(DIR2_PIN, OUTPUT);
pinMode(PUL3_PIN, OUTPUT);
pinMode(DIR3_PIN, OUTPUT);
pinMode(PUL4_PIN, OUTPUT);
pinMode(DIR4_PIN, OUTPUT);
pinMode(PUL5_PIN, OUTPUT);
pinMode(DIR5_PIN, OUTPUT);
pinMode(PUL6_PIN, OUTPUT);
pinMode(DIR6_PIN, OUTPUT);
pinMode(EN321_PIN, OUTPUT);
pinMode(EN4_PIN, OUTPUT);
pinMode(EN5_PIN, OUTPUT);
pinMode(EN6_PIN, OUTPUT);
digitalWrite(PUL1_PIN, LOW);
digitalWrite(DIR1_PIN, LOW);
digitalWrite(PUL2_PIN, LOW);
digitalWrite(DIR2_PIN, LOW);
digitalWrite(PUL3_PIN, LOW);
digitalWrite(DIR3_PIN, LOW);
digitalWrite(PUL4_PIN, LOW);
digitalWrite(DIR4_PIN, LOW);
digitalWrite(PUL5_PIN, LOW);
digitalWrite(DIR5_PIN, LOW);
digitalWrite(PUL6_PIN, LOW);
digitalWrite(DIR6_PIN, LOW);
digitalWrite(EN321_PIN, HIGH);
digitalWrite(EN4_PIN, HIGH);
digitalWrite(EN5_PIN, HIGH);
digitalWrite(EN6_PIN, HIGH);
}
void loop()
{
delay(10000);
digitalWrite(EN321_PIN, LOW);
digitalWrite(EN4_PIN, LOW);
digitalWrite(EN5_PIN, LOW);
digitalWrite(EN6_PIN, LOW);
delay(1000);
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)
{
delValue = delValue - incValue;
}
else if (i > (totSteps - accRate))
{
delValue = delValue + incValue;
}
}
else
{
if (i < ((totSteps - (totSteps % 2))/2))
{
delValue = delValue - incValue;
}
else if (i > ((totSteps + (totSteps % 2))/2))
{
delValue = delValue + incValue;
}
}
digitalWrite(PUL2_PIN, HIGH);
delayMicroseconds(delValue);
digitalWrite(PUL2_PIN, LOW);
delayMicroseconds(delValue);
}
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){
delValue = delValue - incValue;
} else if (i > (totSteps - accRate)){
delValue = delValue + incValue;
}
} else {
if (i < ((totSteps - (totSteps % 2))/2)){
delValue = delValue - incValue;
} else if (i > ((totSteps + (totSteps % 2))/2)){
delValue = delValue + incValue;
}
}
digitalWrite(PUL3_PIN, HIGH);
delayMicroseconds(delValue);
digitalWrite(PUL3_PIN, LOW);
delayMicroseconds(delValue);
}
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){
delValue = delValue - incValue;
} else if (i > (totSteps - accRate)){
delValue = delValue + incValue;
}
} else {
if (i < ((totSteps - (totSteps % 2))/2)){
delValue = delValue - incValue;
} else if (i > ((totSteps + (totSteps % 2))/2)){
delValue = delValue + incValue;
}
}
digitalWrite(PUL5_PIN, HIGH);
delayMicroseconds(delValue);
digitalWrite(PUL5_PIN, LOW);
delayMicroseconds(delValue);
}
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};
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);
goStrightLine(Jhome, J1, 0.25e-4, 0.75e-10, 0.0, 0.0);
float velG=0.25e-4;
goStrightLine(J1, J11, 0.25e-4, 0.75e-10