Hi
Seems to get it workin the way I want it now . I am able to stop the motion abruptly when the reed switch is encountered.
I have pasted my code below .
Thanks Paul
#include <AccelStepper.h>
#define SWITCH 7 //input for REED SWITCH
#define LED 13 //pin for the LED
int incomingByte = 0;
int val = 0; //used to store input value
// stepper motor pins: STEP, DIRECTION, STEPPER ON/OFF
AccelStepper Stepper1(1,2,3);
void setup() {
for(int i = 0;i <54;i++) {
pinMode(i,OUTPUT);
digitalWrite(i,LOW);
}
pinMode(SWITCH, INPUT); //SWITCH is input
pinMode(LED, OUTPUT); //tell arduino LED is an output
//Start Serial for debuging purposes
Serial.begin(115200); // USB comm with PC
// switch stepper chips off
digitalWrite(4,HIGH);
Stepper1.setMaxSpeed(500);
Stepper1.setAcceleration(500);
spam();
}
void spam() {
Serial.println("--------------------");
Serial.println("1: Stepper1 FORWARD");
Serial.println("2: STOP");
}
// main loop
void loop() {
if (Serial.available() > 0) {
incomingByte = Serial.read()-48;
Serial.print(" Selection:");Serial.println(incomingByte);
switch(incomingByte) {
case 1:
Stepper1.setCurrentPosition(0);
val=digitalRead(SWITCH); //read input value from reed switch and store it
if(val == 0) //switch is open
{
digitalWrite(4,LOW); digitalWrite(3,HIGH); digitalWrite(2,HIGH); //Serial.println("Stepper1: forward");
digitalWrite(LED, LOW);
Stepper1.moveTo(30000);
}
if(val == HIGH)
{
digitalWrite(4,HIGH);
Serial.println(Stepper1.currentPosition());
}
break;
case 2 : digitalWrite(4,HIGH);
Serial.println(Stepper1.currentPosition());
break;
default :spam();
break;
}
}
while(Stepper1.currentPosition() !=Stepper1.targetPosition())
{
Stepper1.run();
val=digitalRead(SWITCH);
if(val == HIGH) //switch is closed
{
digitalWrite(4,HIGH);
digitalWrite(LED, HIGH);
Stepper1.moveTo(Stepper1.currentPosition());
Serial.println(Stepper1.currentPosition());
}
}
if(Stepper1.run() ==0)
digitalWrite(4,HIGH);
} // main loop