/* Driving a 5V stepper motor using Keyes L298N Dual Motor Driver; Gabby Shimoni 17-Feb-2019 */ const int ENA = 7; const int IN1 = 6; const int IN2 = 5; const int ENB = 8; const int IN4 = 9; const int IN3 = 10; const int ledPin = 13; void setup() { pinMode(ENA, OUTPUT); pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(ENB, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT); pinMode(ledPin, OUTPUT); digitalWrite(ledPin, LOW); //delay is used to control the speed, the lower the faster. //reverse(step,delay); reverse(4096, 1); //forward(step,delay); forward(4096, 1); } void loop() { } void reverse(int i, int j) { // set both motors ON digitalWrite(ENA, HIGH); digitalWrite(ENB, HIGH); while (1) { digitalWrite(IN1, 0); digitalWrite(IN2, 0); digitalWrite(IN3, 0); digitalWrite(IN4, 1); delay(j); i--; if (i < 1) break; digitalWrite(IN1, 0); digitalWrite(IN2, 0); digitalWrite(IN3, 1); digitalWrite(IN4, 1); delay(j); i--; if (i < 1) break; digitalWrite(IN1, 0); digitalWrite(IN2, 0); digitalWrite(IN3, 1); digitalWrite(IN4, 0); delay(j); i--; if (i < 1) break; digitalWrite(IN1, 0); digitalWrite(IN2, 1); digitalWrite(IN3, 1); digitalWrite(IN4, 0); delay(j); i--; if (i < 1) break; digitalWrite(IN1, 0); digitalWrite(IN2, 1); digitalWrite(IN3, 0); digitalWrite(IN4, 0); delay(j); i--; if (i < 1) break; digitalWrite(IN1, 1); digitalWrite(IN2, 1); digitalWrite(IN3, 0); digitalWrite(IN4, 0); delay(j); i--; if (i < 1) break; digitalWrite(IN1, 1); digitalWrite(IN2, 0); digitalWrite(IN3, 0); digitalWrite(IN4, 0); delay(j); i--; if (i < 1) break; digitalWrite(IN1, 1); digitalWrite(IN2, 0); digitalWrite(IN3, 0); digitalWrite(IN4, 1); delay(j); i--; if (i < 1) break; } // set both motors OFF digitalWrite(ENA, LOW); digitalWrite(ENB, LOW); } // end reverse() void forward(int i, int j) { // Set both motors ON digitalWrite(ENA, HIGH); digitalWrite(ENB, HIGH); while (1) { if (i < 1) break; digitalWrite(IN1, 1); digitalWrite(IN2, 0); digitalWrite(IN3, 0); digitalWrite(IN4, 1); delay(j); i--; if (i < 1) break; digitalWrite(IN1, 1); digitalWrite(IN2, 0); digitalWrite(IN3, 0); digitalWrite(IN4, 0); delay(j); i--; if (i < 1) break; digitalWrite(IN1, 1); digitalWrite(IN2, 1); digitalWrite(IN3, 0); digitalWrite(IN4, 0); delay(j); i--; if (i < 1) break; digitalWrite(IN1, 0); digitalWrite(IN2, 1); digitalWrite(IN3, 0); digitalWrite(IN4, 0); delay(j); i--; if (i < 1) break; digitalWrite(IN1, 0); digitalWrite(IN2, 1); digitalWrite(IN3, 1); digitalWrite(IN4, 0); delay(j); i--; if (i < 1) break; digitalWrite(IN1, 0); digitalWrite(IN2, 0); digitalWrite(IN3, 1); digitalWrite(IN4, 0); delay(j); i--; if (i < 1) break; digitalWrite(IN1, 0); digitalWrite(IN2, 0); digitalWrite(IN3, 1); digitalWrite(IN4, 1); delay(j); i--; digitalWrite(IN1, 0); digitalWrite(IN2, 0); digitalWrite(IN3, 0); digitalWrite(IN4, 1); delay(j); i--; if (i < 1) break; } // set both motors OFF digitalWrite(ENA, LOW); digitalWrite(ENB, LOW); } // end forward()