Acceleration will not physically change mid program with AccelStepper

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);
  }

  


I believe I found out why. stepper.runSpeed() does not use any acceleration or deceleration...

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.