// Define pins for the motor or stepper control
#define ANeg 18
#define APos 5
#define BNeg 16
#define BPos 17
int counter = 0;
int limit = 222;
int tStep = 20;
bool going = true;
void checkCounter();
void setup() {
// Initialize pins as OUTPUT
pinMode(ANeg, OUTPUT);
pinMode(APos, OUTPUT);
pinMode(BNeg, OUTPUT);
pinMode(BPos, OUTPUT);
}
void loop() {
// Motor/stepper rotation control sequence
while(going){
// Step 1: Activate BPos
digitalWrite(APos, LOW);
digitalWrite(BPos, LOW);
digitalWrite(ANeg, LOW);
digitalWrite(BNeg, HIGH);
counter += 1;
checkCounter();
delay(tStep); // Delay for tStep milliseconds
// Step 2: Activate ANeg
digitalWrite(APos, LOW);
digitalWrite(BPos, LOW);
digitalWrite(ANeg, HIGH);
digitalWrite(BNeg, LOW);
counter += 1;
checkCounter();
delay(tStep);
// Step 3: Activate BPos
digitalWrite(APos, LOW);
digitalWrite(BPos, HIGH);
digitalWrite(ANeg, LOW);
digitalWrite(BNeg, LOW);
counter += 1;
checkCounter();
delay(tStep);
// Step 4: Activate APos and BNeg
digitalWrite(APos, HIGH);
digitalWrite(BPos, LOW);
digitalWrite(ANeg, LOW);
digitalWrite(BNeg, HIGH);
counter += 1;
checkCounter();
delay(tStep);
}
while(!going){
// Step 4: Activate APos and BNeg
digitalWrite(APos, HIGH);
digitalWrite(BPos, LOW);
digitalWrite(ANeg, LOW);
digitalWrite(BNeg, HIGH);
counter += 1;
checkCounter();
delay(tStep);
// Step 3: Activate BPos
digitalWrite(APos, LOW);
digitalWrite(BPos, HIGH);
digitalWrite(ANeg, LOW);
digitalWrite(BNeg, LOW);
counter += 1;
checkCounter();
delay(tStep);
// Step 2: Activate ANeg
digitalWrite(APos, LOW);
digitalWrite(BPos, LOW);
digitalWrite(ANeg, HIGH);
digitalWrite(BNeg, LOW);
counter += 1;
checkCounter();
delay(tStep);
// Step 1: Activate BPos
digitalWrite(APos, LOW);
digitalWrite(BPos, LOW);
digitalWrite(ANeg, LOW);
digitalWrite(BNeg, HIGH);
counter += 1;
checkCounter();
delay(tStep); // Delay for tStep milliseconds
}
}
void checkCounter(){
if(counter >= limit && going == true){
going = false;
counter = (limit - 200) * -1;
}
else if(counter >= limit && going == false){
going = true;
counter = (limit - 200) * -1;
}
}