#define inch 32000
#define teeth 5
#define xStp 2
#define yStp 3
#define xDir 5
#define yDir 6
#define Start 13
unsigned long prevTimeX = 0;
unsigned long currTimeX;
unsigned long prevTimeY = 0;
unsigned long currTimeY;
long Dx,Dy;
int Rx,Ry;
int Xrate[] = {30,30,30,30,36,56,98,300};
int Yrate[] = {300,98,56,36,30,30,30,30};
int disA[] = {2330,2254,2072,1818,1515,1110,690,233};
int disB[] = {233,690,1110,1515,1818,2072,2254,2330};
void setup() {
Serial.begin(9600);
pinMode(xStp, OUTPUT);
pinMode(xDir, OUTPUT);
pinMode(yStp, OUTPUT);
pinMode(yDir, OUTPUT);
pinMode(Start, INPUT_PULLUP);
for(int i=0; i<8; i++){
Serial.print(Xrate[i]);
Serial.print("/");
Serial.print(disA[i]);
Serial.print(" ");
Serial.print(Yrate[i]);
Serial.print("/");
Serial.print(disB[i]);
Serial.print(" ");
Serial.println(Xrate[i]*disA[i]-Yrate[i]*disB[i]);
}
}
void loop() {
if(digitalRead(Start) == LOW){ dovetail();}
}
void dovetail(){
for(int i=0;i<teeth;i++){
digitalWrite(yDir, LOW);
for(int i=0; i<8; i++){
Rx = Yrate[i];
Dx = disB[i];
Ry = Xrate[i];
Dy = disA[i];
while(Dx > 0 && Dy > 0){
currTimeX = micros();
if((currTimeX - prevTimeX) >= Rx ){
prevTimeX = currTimeX;
digitalWrite(xStp, HIGH);
digitalWrite(xStp, LOW);
Dx--;
}
currTimeY = micros();
if((currTimeY - prevTimeY) >= Ry ){
prevTimeY = currTimeY;
digitalWrite(yStp, HIGH);
digitalWrite(yStp, LOW);
Dy--;
}
}
}
digitalWrite(yDir, HIGH);
for(int i=0; i<8; i++){
Rx = Xrate[i];
Dx = disA[i];
Ry = Yrate[i];
Dy = disB[i];
while(Dx > 0 && Dy > 0){
currTimeX = micros();
if((currTimeX - prevTimeX) >= Rx ){
prevTimeX = currTimeX;
digitalWrite(xStp, HIGH);
digitalWrite(xStp, LOW);
Dx--;
}
currTimeY = micros();
if((currTimeY - prevTimeY) >= Ry ){
prevTimeY = currTimeY;
digitalWrite(yStp, HIGH);
digitalWrite(yStp, LOW);
Dy--;
}
}
}
}
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
stepper1:A-
stepper1:A+
stepper1:B+
stepper1:B-
stepper2:A-
stepper2:A+
stepper2:B+
stepper2:B-
drv1:ENABLE
drv1:MS1
drv1:MS2
drv1:MS3
drv1:RESET
drv1:SLEEP
drv1:STEP
drv1:DIR
drv1:GND.1
drv1:VDD
drv1:1B
drv1:1A
drv1:2A
drv1:2B
drv1:GND.2
drv1:VMOT
drv2:ENABLE
drv2:MS1
drv2:MS2
drv2:MS3
drv2:RESET
drv2:SLEEP
drv2:STEP
drv2:DIR
drv2:GND.1
drv2:VDD
drv2:1B
drv2:1A
drv2:2A
drv2:2B
drv2:GND.2
drv2:VMOT
btn1:1.l
btn1:2.l
btn1:1.r
btn1:2.r