Hi all. I'm new to this forum and the world of Arduino and coding.
I'm trying to write a code that will control a stepper motor, clockwise when 1 input is low and anticlockwise when another input goes low.
I can get it to work in either direction but when i put the code in for both directions they conflict and the motor just vibrates.
I'm sure there will be an easy answer to this but it eludes me. Please someone help.
This the code I have
int myCounter = 0;
int mySwitchPin =4;
int mySwitchPin1 =0;
int motorPin1 = 14;
int motorPin2 = 12;
int motorPin3 = 13;
int motorPin4 = 15;
int delayTime = 2;
void setup() {
Serial.begin(115200);
pinMode(mySwitchPin, INPUT_PULLUP);
pinMode(mySwitchPin1, INPUT_PULLUP);
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
}
void loop(){
clockwise();
anticlockwise();
}
void clockwise(){
if(myCounter<510){ //PIN 4 PIN1 0
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(1);
myCounter = myCounter + 1;
}
else if(digitalRead(mySwitchPin ) == LOW) { //PIN 4 PIN1 0
myCounter = 0;
}
}
void anticlockwise(){
if(myCounter<510){ //PIN 4 PIN1 0
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(1);
myCounter = myCounter + 1;
}
else if(digitalRead(mySwitchPin1 ) == LOW) { //PIN 4 PIN1 0
myCounter = 0;
}
}
Thanks.