int stepPin = 5; int dirPin = 6; int stepPin2 = 10; int dirPin2 = 11; int theSpeed[] = {350, 360, 500, 5000}; //moving speeds, need experimenting int led_pin = 13; int button_pin = 2; int button_state = HIGH; unsigned long mDelay = 1; //catching delay, needs experimenting int numstep1 = 60; //steps for first half int numstep2 = 60; //steps for second half (different speed) void setup() { // put your setup code here, to run once: pinMode(led_pin, OUTPUT); digitalWrite(led_pin, LOW); // LED on pinMode(button_pin, INPUT); pinMode(button_pin, INPUT_PULLUP); while(button_state == HIGH) { button_state = digitalRead(button_pin); delay(100); } digitalWrite(led_pin, HIGH); // LED on pinMode(stepPin,OUTPUT); pinMode(dirPin,OUTPUT); digitalWrite(dirPin, HIGH); pinMode(stepPin2,OUTPUT); pinMode(dirPin2,OUTPUT); digitalWrite(dirPin2, HIGH); delay(100); stepper1up(50, 0); //horizontal ////////////// stepper2up(50, 0); //horizontal ////////////// delay(200); stepper1up(256, 0); //move to vertical stepper2up(256, 0); //move to vertical delay(200); stepper1down( 120,1); delay(1000); } void loop() { //stepper 1 up delay(1000); stepper1up(numstep1, 0); stepper1up(numstep2, 0); delay(mDelay); stepper2down(numstep2, 1); stepper2down(numstep1, 2); delay(1000); stepper2up(numstep1, 0); stepper2up(numstep2, 0); delay(mDelay); stepper1down(numstep2, 1); stepper1down(numstep1, 2); } //end of loop void stepper1up(int steps, int speedy) { digitalWrite(dirPin, LOW); for(int x = 0; x < steps; x++) { digitalWrite(stepPin,HIGH); delayMicroseconds(theSpeed[speedy]); digitalWrite(stepPin,LOW); delayMicroseconds(theSpeed[speedy]); } } void stepper1down(int steps, int speedy) { digitalWrite(dirPin, HIGH); for(int x = 0; x < steps; x++) { digitalWrite(stepPin,HIGH); delayMicroseconds(theSpeed[speedy]); digitalWrite(stepPin,LOW); delayMicroseconds(theSpeed[speedy]); } } void stepper2up(int steps, int speedy) { digitalWrite(dirPin2, HIGH); for(int x = 0; x < steps; x++) { digitalWrite(stepPin2,HIGH); delayMicroseconds(theSpeed[speedy]); digitalWrite(stepPin2,LOW); delayMicroseconds(theSpeed[speedy]); } } void stepper2down(int steps, int speedy) { digitalWrite(dirPin2, LOW); int Speed = theSpeed[speedy]; for(int x = 0; x < steps; x++) { digitalWrite(stepPin2,HIGH); delayMicroseconds(theSpeed[speedy]); digitalWrite(stepPin2,LOW); delayMicroseconds(theSpeed[speedy]); } }