In the int of goBack, I want to change the acceleration from the previous call of stepper.setAcceleration but it is not physically changing it. I have tried adding a delay, stepper.stop(), etc. Any ideas?
#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 right, 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
int A = (0);
int ModeButtonLeft = (analogRead(A6));
int StartButton = (digitalRead(10));
int HomeSwitch = (digitalRead(17));
int ReturnSwitch = (digitalRead(15));
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);
stepper.setAcceleration(5000);
}
void loop()
{
digitalWrite(7, HIGH);
int ModeButtonLeft = (analogRead(A6));
int StartButton = (digitalRead(10));
int HomeSwitch = (digitalRead(17));
int ReturnSwitch = (digitalRead(15));
int feedValue = ((analogRead(A2)) / 10) + 20; //FEEDRATE FUNCTION
int posValue = (1023 - analogRead(A4) * .75 + 7500); //RAPID POSITION FUNCTION
if (A = ModeButtonLeft == 0){
goBack(posValue);
}
if ((StartButton == LOW) && (HomeSwitch == LOW) && (ModeButtonLeft > 5 )) {
digitalWrite(7, LOW);
runIn(-posValue, -feedValue);
cut(-feedValue, -posValue);
}
stepper.setCurrentPosition(0);
digitalWrite(7, HIGH);
delay(500);
}
int runIn(int posValue, int feedValue)
{
digitalWrite(7, LOW);
digitalWrite(MS1, HIGH);
digitalWrite(MS2, LOW);
digitalWrite(MS3, LOW);
stepper.setMaxSpeed(-2500);
stepper.setSpeed(-2300);
stepper.runToNewPosition(posValue);
delay(700);
digitalWrite(7, HIGH);
}
int goBack(int posValue)
{
digitalWrite(7, LOW);
while (digitalRead(17) == HIGH)
{
digitalWrite(MS1, HIGH);
digitalWrite(MS2, LOW);
digitalWrite(MS3, LOW);
stepper.setAcceleration(10); //THIS IS THE LINE I WANT IT TO TAKE EFFECT AND IT ISNT
stepper.setMaxSpeed(3000);
stepper.setSpeed(2050);
stepper.runSpeed();
}
}
int cut(int feedValue, int posValue) {
digitalWrite(7, LOW);
stepper.setMaxSpeed(feedValue);
stepper.setAcceleration(100);
digitalWrite(MS1, HIGH);
digitalWrite(MS2, HIGH);
digitalWrite(MS3, HIGH);
stepper.move(-5000);
while (digitalRead(15) == HIGH){
stepper.run();
}
delay(1000);
stepper.stop();
goBack(-posValue);
digitalWrite(7, HIGH);
delay(100);
}