#include <Stepper.h>
#include <Servo.h>
Servo myservo;
const int stepsPerRevolution = 200;
int dirPin1 = 2;
int stepPin1 = 3;
int dirPin2 = 4;
int stepPin2 = 5;
int dirPin3 = 6;
int stepPin3 = 7;
void setup() {
myservo.attach(A0);
pinMode(dirPin1, OUTPUT);
pinMode(stepPin1, OUTPUT);
pinMode(dirPin2, OUTPUT);
pinMode(stepPin2, OUTPUT);
pinMode(dirPin3, OUTPUT);
pinMode(stepPin3, OUTPUT);
}
void loop() {
//Extending Arm
digitalWrite(dirPin1, HIGH);
for (int i = 0; i < 2.8 * stepsPerRevolution; i++) {
// These four lines result in 1 step:
digitalWrite(stepPin1, HIGH);
delayMicroseconds(500);
digitalWrite(stepPin1, LOW);
delayMicroseconds(500);
}
digitalWrite(dirPin2, HIGH);
for (int i = 0; i < 2.8 * stepsPerRevolution; i++) {
// These four lines result in 1 step:
digitalWrite(stepPin2, HIGH);
delayMicroseconds(500);
digitalWrite(stepPin2, LOW);
delayMicroseconds(500);
}
digitalWrite(dirPin3, HIGH);
for (int i = 0; i < 2.8 * stepsPerRevolution; i++) {
// These four lines result in 1 step:
digitalWrite(stepPin3, HIGH);
delayMicroseconds(500);
digitalWrite(stepPin3, LOW);
delayMicroseconds(500);
}
myservo.write(60);
//Retract Arm
digitalWrite(dirPin1, LOW);
for (int i = 0; i < 2.8 * stepsPerRevolution; i++) {
// These four lines result in 1 step:
digitalWrite(stepPin1, HIGH);
delayMicroseconds(500);
digitalWrite(stepPin1, LOW);
delayMicroseconds(500);
}
digitalWrite(dirPin2, LOW);
for (int i = 0; i < 2.8 * stepsPerRevolution; i++) {
// These four lines result in 1 step:
digitalWrite(stepPin2, HIGH);
delayMicroseconds(500);
digitalWrite(stepPin2, LOW);
delayMicroseconds(500);
}
digitalWrite(dirPin3, LOW);
for (int i = 0; i < 2.8 * stepsPerRevolution; i++) {
// These four lines result in 1 step:
digitalWrite(stepPin3, HIGH);
delayMicroseconds(500);
digitalWrite(stepPin3, LOW);
delayMicroseconds(500);
}
myservo.write(0);
}