Do you mean like this? In that case it wont work for me. It doesnt run at all. Just idle
const int coilA = 2;
const int coilB = 3;
const int ms = 800;
int inc = 0;
bool changeDir = false;
void setup() {
Serial.begin(9600);
pinMode(coilA, OUTPUT);
pinMode(coilB, OUTPUT);
digitalWrite(coilA, LOW);
digitalWrite(coilB, LOW);
}
void loop() {
if (inc % 500 == 0) {
changeDir = !changeDir;
delay(100);
}
if (changeDir == 1) {
cw();
} else if (changeDir == 0) {
ccw();
}
inc++;
}
void cw() {
step1();
delayMicroseconds(ms);
step2();
delayMicroseconds(ms);
step3();
delayMicroseconds(ms);
step4();
delayMicroseconds(ms);
}
void ccw() {
step4();
delayMicroseconds(ms);
step3();
delayMicroseconds(ms);
step2();
delayMicroseconds(ms);
step1();
delayMicroseconds(ms);
}
void step1 () {
digitalWrite(coilA, LOW);
digitalWrite(coilB, HIGH);
}
void step2 () {
digitalWrite(coilA, HIGH);
digitalWrite(coilB, HIGH);
}
void step3 () {
digitalWrite(coilA, HIGH);
digitalWrite(coilB, LOW);
}
void step4 () {
digitalWrite(coilA, LOW);
digitalWrite(coilB, LOW);
}
This do work bot direction is still not reliable:
const int coilA = 2;
const int coilB = 3;
const int ms = 800;
int inc = 0;
bool changeDir = false;
void setup() {
Serial.begin(9600);
pinMode(coilA, OUTPUT);
pinMode(coilB, OUTPUT);
digitalWrite(coilA, LOW);
digitalWrite(coilB, LOW);
}
void loop() {
if (inc % 500 == 0) {
changeDir = !changeDir;
delay(100);
}
if (changeDir == 1) {
cw();
} else if (changeDir == 0) {
ccw();
}
inc++;
}
void cw() {
step1();
step2();
step3();
step4();
}
void ccw() {
step4();
step3();
step2();
step1();
}
void step1 () {
digitalWrite(coilA, LOW);
delayMicroseconds(ms);
digitalWrite(coilB, HIGH);
delayMicroseconds(ms);
}
void step2 () {
digitalWrite(coilA, HIGH);
delayMicroseconds(ms);
digitalWrite(coilB, HIGH);
delayMicroseconds(ms);
}
void step3 () {
digitalWrite(coilA, HIGH);
delayMicroseconds(ms);
digitalWrite(coilB, LOW);
delayMicroseconds(ms);
}
void step4 () {
digitalWrite(coilA, LOW);
delayMicroseconds(ms);
digitalWrite(coilB, LOW);
delayMicroseconds(ms);
}