Hello, I can get the stepper to reverse in the int goBack section ONLY by putting negative numbers in the setacceleration, setMaxSpeed and setSpeed numbers. I want to control it by pulling pin 2 low, which is the direction pin. Any ideas why this code will not produce what I am looking for?
#include <AccelStepper.h>
//A1(15)= Retract switch, cut complete, going low.
//A2= 10k Feedrate Pot 0-5v
//A3(17)= Home Switch
//A4= Rapid to position pot, 10K 0-5V
//A6= Toggle switch to the left, goes low
//A7= Toggle switch in the middle, goes low
//D2= Direction on stepper driver
//D3= Step on stepper driver
//D4= MS3
//D5= MS2
//D6= MS1
//D7= Enable on stepper driver
//D10= Start switch, goes low
AccelStepper stepper(1, 3, 2);
#define MS1 6
#define MS2 5
//#define MS3 5
//#define EN 7
//#define dir 2
void setup()
{
pinMode(10, INPUT);
pinMode(A1, INPUT);
pinMode(A3, INPUT);
pinMode(10, INPUT);
pinMode(7, OUTPUT);
pinMode(2, OUTPUT);
pinMode(MS1, OUTPUT);
pinMode(MS2, OUTPUT);
// pinMode(MS3, OUTPUT);
Serial.begin(9600);
digitalWrite(7, HIGH);
}
void loop()
{
digitalWrite(7, HIGH);
digitalWrite(2, HIGH);
int feedValue = ((analogRead(A2)) / 5) + 50; //FEEDRATE FUNCTION
int posValue = (1023 - analogRead(A4) * .75 + 500); //RAPID POSITION FUNCTION
if (posValue < 300)
posValue = 300;
if ((digitalRead(10) == LOW) && (digitalRead(17) == LOW))
{ digitalWrite(7, LOW);
runIn(posValue, feedValue);
cut(feedValue, posValue);
}
stepper.setCurrentPosition(0);
digitalWrite(7, HIGH);
delay(500);
}
int runIn(int posValue, int feedValue)
{
digitalWrite(2, HIGH);
digitalWrite(7, LOW);
digitalWrite(MS1, HIGH);
digitalWrite(MS2, LOW);
//digitalWrite(MS3, LOW);
stepper.setAcceleration(2000);
stepper.setMaxSpeed(2200);
stepper.setSpeed(2000);
stepper.runToNewPosition(posValue);
delay(700);
}
int goBack()
{
digitalWrite(7, LOW);
digitalWrite(2, LOW);
while (digitalRead(17) == HIGH)
{
digitalWrite(MS1, LOW);
digitalWrite(MS2, HIGH);
digitalWrite(2, LOW);
//digitalWrite(MS3, LOW);
stepper.setAcceleration(200);
stepper.setMaxSpeed(5000);
stepper.setSpeed(500);
digitalWrite(2, LOW);
stepper.runSpeed();
}
}
int cut(int feedValue, int posValue) {
digitalWrite(7, LOW);
int curPos1 = stepper.currentPosition();
stepper.setMaxSpeed(feedValue);
digitalWrite(MS1, HIGH);
digitalWrite(MS2, HIGH);
//digitalWrite(MS3, HIGH);
stepper.move(4000);
while (digitalRead(15) == HIGH && (digitalRead(10) == HIGH)) {
stepper.run();
}
int curPos2 = stepper.currentPosition();
delay(1000);
stepper.stop();
digitalWrite(2, LOW);
goBack();
}