/*
Speed control of 2 stepper motors
Analog input of speed, mapped from 0 to MAXSPEED
Digital input of direction
Digital input of stop
*/
#define PST1 2
#define PST2 3
#define PDIR1 4
#define PDIR2 5
#define MAXSPEED 600
#define DIRECTION 6
#define STOP 7
const byte ASPEED = A0;
#include <AccelStepper.h>
//
// Define 2 stepper motors
AccelStepper ST1(1, PST1, PDIR1);
AccelStepper ST2(1, PST2, PDIR2);
void setup()
{
ST1.setMaxSpeed(100);
ST1.setAcceleration(10);
ST2.setMaxSpeed(100);
ST2.setAcceleration(10);
pinMode(PST1, OUTPUT);
pinMode(PST2, OUTPUT);
pinMode(PDIR1, OUTPUT);
pinMode(PDIR2, OUTPUT);
pinMode(DIRECTION, INPUT);
pinMode(STOP, INPUT);
}
void loop() {
// CONTROL STOP
if(digitalRead(STOP)) {
ST1.setSpeed(0);
ST1.runSpeed();
ST2.setSpeed(0);
ST2.runSpeed();
}
// CONTROL DIRECTION
if(digitalRead(DIRECTION)) {
digitalWrite(PDIR1, HIGH);
delay(1);
digitalWrite(PDIR2, HIGH);
// delay(1);
}
else {
digitalWrite(PDIR1, LOW);
delay(10);
digitalWrite(PDIR2, LOW);
// delay(10);
}
delay(1);
// INPUT SPEED OF MOTORS
int analogspeed = analogRead(ASPEED);
int valspeed = map(analogspeed, 0, 1023, 0, MAXSPEED);
//
if(digitalRead (STOP)) {
if(digitalRead(DIRECTION)){
ST1.setSpeed(valspeed);
ST2.setSpeed(valspeed);
}
else {
ST1.setSpeed(-valspeed);
ST2.setSpeed(-valspeed);
}
ST1.runSpeed();
ST2.runSpeed();
}
//
delay(1);
}