Im trying to control the direction (clockwise and counterclockwise) of a stepper (28BJY) with a dual H-bridge made out of transistor. I tried this but what it is doing is that if I write a '1' in the serial monitor, it rotates clockwise but if I write a 0 it wont change anything. It can only take the '0' if a reset the arduino and write '0' instead, but again, if I write a '1', it wont take it. Is there a problem with the code?
Im a newbie so if you could help me by being really detailed, id appreciate it.
Thank you
int coila1 = 5;
int coila2 = 4;
int coilb1 = 3;
int coilb2 = 2;
int dir;
void setup()
{
pinMode(coila1, OUTPUT);
pinMode(coila2, OUTPUT);
pinMode(coilb1, OUTPUT);
pinMode(coilb2, OUTPUT);
Serial.begin(9600);
}
void loop()
{
dir = Serial.read();
if (dir == '1')
{
Serial.println("clockwise");
while (dir == '1')
{
digitalWrite(coila1, HIGH);
digitalWrite(coila2, HIGH);
digitalWrite(coilb1, LOW);
digitalWrite(coilb2, LOW);
delay(10);
digitalWrite(coila1, LOW);
digitalWrite(coila2, HIGH);
digitalWrite(coilb1, HIGH);
digitalWrite(coilb2, LOW);
delay(10);
digitalWrite(coila1, LOW);
digitalWrite(coila2, LOW);
digitalWrite(coilb1, HIGH);
digitalWrite(coilb2, HIGH);
delay(10);
digitalWrite(coila1, HIGH);
digitalWrite(coila2, LOW);
digitalWrite(coilb1, LOW);
digitalWrite(coilb2, HIGH);
delay(10);
}
}
if (dir == '0')
{
Serial.println("counterclockwise");
while (dir == '0')
{
digitalWrite(coila1, HIGH);
digitalWrite(coila2, LOW);
digitalWrite(coilb1, LOW);
digitalWrite(coilb2, LOW);
delay(10);
digitalWrite(coila1, LOW);
digitalWrite(coila2, LOW);
digitalWrite(coilb1, HIGH);
digitalWrite(coilb2, LOW);
delay(10);
digitalWrite(coila1, LOW);
digitalWrite(coila2, HIGH);
digitalWrite(coilb1, LOW);
digitalWrite(coilb2, LOW);
delay(10);
digitalWrite(coila1, LOW);
digitalWrite(coila2, LOW);
digitalWrite(coilb1, LOW);
digitalWrite(coilb2, HIGH);
delay(10);
}
}
}