//Mainecoast Shop Digital product
#include "FastAccelStepper.h"
//#include "AVRStepperPins.h" // Only required for AVR controllers
#define dirPinStepper 8
#define enablePinStepper 12
#define stepPinStepper 9
#define signalPin A0
int speed;
int var;
bool flag=true;
int premuto=HIGH;
int premuto2=HIGH;
// Change this based on your setup! max number of pulses per second you motor and driver can handle before stalling
int maxspeed =2650; // 26500;
FastAccelStepperEngine engine = FastAccelStepperEngine();
FastAccelStepper *stepper = NULL;
void setup() {
engine.init();
stepper = engine.stepperConnectToPin(stepPinStepper);
if (stepper) {
stepper->setDirectionPin(dirPinStepper);
stepper->setEnablePin(enablePinStepper);
stepper->setAutoEnable(LOW);
// Acceleration set to 3000 steps per second
stepper->setAcceleration(30000); // 100 steps/s²
}
int i=1;
pinMode(2, INPUT);
pinMode(3, INPUT);
pinMode(4, INPUT);
pinMode(11, INPUT);
pinMode(10, INPUT);
}
void loop()
{
/* var = analogRead(signalPin);
speed = map(var,0,1023,0,26500);
stepper->setSpeedInHz(speed); */
int en=digitalRead(2);
if (en!=premuto and en==HIGH){
premuto2=!premuto2;
//digitalWrite(10,premuto);
digitalWrite(12,premuto2);
digitalWrite(13,!premuto2);
} premuto=en;
if (digitalRead(10)==HIGH){
if(stepper->isRunning() == true){
stepper->stopMove();
stepper->moveTo(50, true);
}}
if (digitalRead(11)==HIGH){
var = analogRead(signalPin);
speed = map(var,1,1023,1,maxspeed);
stepper->setSpeedInHz(speed);
const long stepsThreshold = -1000;
long currentPosition = stepper->getCurrentPosition();
long targetPosition = 10000;
stepper->moveTo(currentPosition = - 100000);
}
if (digitalRead(3)==HIGH){
// speed = map(var,1,1023,1,2650);
stepper->setSpeedInHz(speed);
const long stepsThreshold = -1000;
long currentPosition = stepper->getCurrentPosition();
long targetPosition = 10000;
stepper->moveTo(currentPosition = - 100000);
}
if (digitalRead(4)==HIGH){
// speed =speed = map(var,1,1023,1,2650);
stepper->setSpeedInHz(speed);
const long stepsThreshold = 1000;
long currentPosition = stepper->getCurrentPosition();
long targetPosition = 10000;
stepper->moveTo(currentPosition + 100000);
}
delayMicroseconds(1000);
}