/*
  Stepper Motor Test
  stepper-test01.ino
  Uses MA860H or similar Stepper Driver Unit
  Has speed control & reverse switch
  
  DroneBot Workshop 2019
  https://dronebotworkshop.com
*/
 
// Defin pins
 
int SW_L = 2;  // Push button for reverse
int SW_R = 3;
int PUL = 5;    // PUL- pin
int DIR = 4;    // DIR- pin
int Relay = 11;
int spd = A0;     // Potentiometer
 
// Variables
 
int pd = 500;       // Pulse Delay period
int rt = 1000;
boolean setdir_R = LOW; // Set Direction
boolean setdir_L = HIGH;
 
// Interrupt 
 
void revers()
{
   setdir_R = !setdir_R;
}
 
void forward()
{
  setdir_L = !setdir_L;
}
 
void setup() {
 
  pinMode(PUL, OUTPUT);
  pinMode(DIR, OUTPUT);
  pinMode(Relay, OUTPUT);
  attachInterrupt(digitalPinToInterrupt(SW_L), revers, HIGH);
  attachInterrupt(digitalPinToInterrupt(SW_R), forward, HIGH);
  digitalWrite(Relay, LOW);
  
}

void left()
{
   
  if(digitalRead(SW_L) == 0)
  {
    pd = map((analogRead(spd)),0,1023,2000,50);
    digitalWrite(Relay, HIGH);
    delayMicroseconds(rt);
    digitalWrite(DIR, setdir_L);
    digitalWrite(PUL, HIGH);
    delayMicroseconds(pd);
    digitalWrite(PUL, LOW);
    delayMicroseconds(pd);
  }
  if(digitalRead(SW_L) != 0)
  {
    delayMicroseconds(rt);
    digitalWrite(Relay, LOW);
  }
}

void right()
{
   
  if(digitalRead(SW_R) == 0)
  {
    pd = map((analogRead(spd)),0,1023,2000,50);
    digitalWrite(Relay, HIGH);
    delayMicroseconds(rt);
    digitalWrite(DIR, setdir_R);
    digitalWrite(PUL, HIGH);
    delayMicroseconds(pd);
    digitalWrite(PUL, LOW);
    delayMicroseconds(pd);
  }
  if(digitalRead(SW_R) != 0)
  {
    delayMicroseconds(rt);
    digitalWrite(Relay, LOW);
  }
}
 
void loop() 
{
  
    left(); 
    right();  
  
 
}
nano:12
nano:11
nano:10
nano:9
nano:8
nano:7
nano:6
nano:5
nano:4
nano:3
nano:2
nano:GND.2
nano:RESET.2
nano:0
nano:1
nano:13
nano:3.3V
nano:AREF
nano:A0
nano:A1
nano:A2
nano:A3
nano:A4
nano:A5
nano:A6
nano:A7
nano:5V
nano:RESET
nano:GND.1
nano:VIN
nano:12.2
nano:5V.2
nano:13.2
nano:11.2
nano:RESET.3
nano:GND.3
pot1:GND
pot1:SIG
pot1:VCC
A4988
drv1:ENABLE
drv1:MS1
drv1:MS2
drv1:MS3
drv1:RESET
drv1:SLEEP
drv1:STEP
drv1:DIR
drv1:GND.1
drv1:VDD
drv1:1B
drv1:1A
drv1:2A
drv1:2B
drv1:GND.2
drv1:VMOT
stepper1:A-
stepper1:A+
stepper1:B+
stepper1:B-
sw1:1a
sw1:2a
sw1:3a
sw1:4a
sw1:5a
sw1:6a
sw1:7a
sw1:8a
sw1:8b
sw1:7b
sw1:6b
sw1:5b
sw1:4b
sw1:3b
sw1:2b
sw1:1b
gnd1:GND
vcc1:VCC
r1:1
r1:2
NOCOMNCVCCGNDINLED1PWRRelay Module
relay1:VCC
relay1:GND
relay1:IN
relay1:NC
relay1:COM
relay1:NO
NOCOMNCVCCGNDINLED1PWRRelay Module
relay2:VCC
relay2:GND
relay2:IN
relay2:NC
relay2:COM
relay2:NO
r2:1
r2:2