So I have a program to control a motor in several different ways. What I need help with is while continuous operation of the motor in a while loop, how do i send a command through serial to break the loop? Here is my code and the problem area is in case 'F'
const int Step = 6;
const int Dir = 7;
int option;
int turns;
int steps;
int i;
char f;
char r;
char s;
void setup()
{
pinMode(Step,OUTPUT);
pinMode(Dir,OUTPUT);
Serial.begin(9600);
}
void loop()
{
Serial.println("Direction:");
Serial.println("f = Forward");
Serial.println("r = Reverse");
Serial.println("s = Stop");
Serial.println("F = Continuous Forward");
Serial.println("R = Continuous Reverse");
Serial.println("b = Return to Previous Position\n");
while(!Serial.available()){}
option = Serial.read();
switch(option)
{
case'f':
Serial.println("Forward Motion Selected\n");
digitalWrite(Dir, HIGH);
Serial.println("Enter Turns\n");
while (Serial.available() == 0);
turns = Serial.parseInt();
for(i=0; i<(turns*200); i++)
{
digitalWrite(Step,HIGH);
delayMicroseconds(500);
digitalWrite(Step,LOW);
delayMicroseconds(500);
steps++;
}
Serial.print(steps);
break;
case 'r':
Serial.println("Reverse Motion Selected\n");
digitalWrite(Dir, LOW);
Serial.println("Enter Turns\n");
while (Serial.available() == 0);
turns = Serial.parseInt();
for(i=0; i<(turns*200); i++)
{
digitalWrite(Step,HIGH);
delayMicroseconds(500);
digitalWrite(Step,LOW);
delayMicroseconds(500);
steps--;
}
Serial.print(steps);
break;
case 's':
Serial.println("Stop");
digitalWrite(Dir, LOW);
delayMicroseconds(500);
digitalWrite(Step, LOW);
delayMicroseconds(500);
break;
case 'F':
Serial.println("Continuous Forward\n");
digitalWrite(Dir, HIGH);
while(option == 'F')
{
digitalWrite(Step,HIGH);
delayMicroseconds(500);
digitalWrite(Step,LOW);
delayMicroseconds(500);
steps++;
}
Serial.print(steps);
case 'R':
Serial.println("Continuous Forward\n");
digitalWrite(Dir, LOW);
while(option == 'R')
{
digitalWrite(Step,HIGH);
delayMicroseconds(500);
digitalWrite(Step,LOW);
delayMicroseconds(500);
steps++;
}
Serial.print(steps);
case 'b':
Serial.println("Moving to Previous Position\n");
if(steps > 0)
{
digitalWrite(Dir, LOW);
turns = steps;
for(i=0; i<(turns); i++)
{
digitalWrite(Step,HIGH);
delayMicroseconds(500);
digitalWrite(Step,LOW);
delayMicroseconds(500);
steps--;
}
}
if(steps < 0)
{
digitalWrite(Dir, HIGH);
turns = steps;
for(i=0; i<(-turns); i++)
{
digitalWrite(Step,HIGH);
delayMicroseconds(500);
digitalWrite(Step,LOW);
delayMicroseconds(500);
steps--;
}
}
Serial.flush();
break;
}
}