Introduction: Arduino + Stepper Motor(28BYJ-48) + Motor Driver(ULN2003AN)

In this instructable we are going to make this stepper motor work using Arduino.

Step 1: Connect SM to MD

Connect the stepper motor to the motor drivers.

Step 2: Create Some Jumper-to-DuPont Wires.

Solder them together, make sure they are not too short.

Step 3: Connect Ground (left) & Power (right).

Orient them so they fit snuggly.

Step 4: Connect Them to Arduino

5V & Ground.

Step 5: Make Some More Jumper-to-DuPont Wires!

Or just use a female to male dupont wire? But I didn't had any.

Step 6: Connect Them to the Motor Driver, in No Specific Order.

Step 7: Connect Them to Arduino.

IN1 - IN4 on the drivers should be connected to Arduino pins 9 to 12 in order.

IN1 - 9

IN2 - 10

etc.

Step 8: Flash the Arduino (Explained in Comments)

#define STEPPER_PIN_1 9
#define STEPPER_PIN_2 10 #define STEPPER_PIN_3 11 #define STEPPER_PIN_4 12
int step_number = 0; //current step out of 4
void setup() {
  pinMode(STEPPER_PIN_1, OUTPUT);
  pinMode(STEPPER_PIN_2, OUTPUT);
  pinMode(STEPPER_PIN_3, OUTPUT);
  pinMode(STEPPER_PIN_4, OUTPUT);
}
void loop() {
  OneStep(false); //false means the motor will go counter clockwise.
  delay(2); //every 2ms the motor will make a step, 2ms is max speed for this motor.
}
void OneStep(bool dir) {
  if (dir) { //if going clockwise
    switch (step_number) {
      case 0:
        digitalWrite(STEPPER_PIN_1, HIGH);
        digitalWrite(STEPPER_PIN_2, LOW);
        digitalWrite(STEPPER_PIN_3, LOW);
        digitalWrite(STEPPER_PIN_4, LOW);
        break;
      case 1:
        digitalWrite(STEPPER_PIN_1, LOW);
        digitalWrite(STEPPER_PIN_2, HIGH);
        digitalWrite(STEPPER_PIN_3, LOW);
        digitalWrite(STEPPER_PIN_4, LOW);
        break;
      case 2:
        digitalWrite(STEPPER_PIN_1, LOW);
        digitalWrite(STEPPER_PIN_2, LOW);
        digitalWrite(STEPPER_PIN_3, HIGH);
        digitalWrite(STEPPER_PIN_4, LOW);
        break;
      case 3:
        digitalWrite(STEPPER_PIN_1, LOW);
        digitalWrite(STEPPER_PIN_2, LOW);
        digitalWrite(STEPPER_PIN_3, LOW);
        digitalWrite(STEPPER_PIN_4, HIGH);
        break;
    }
  } else { //go anti clockwise
    switch (step_number) {
      case 0:
        digitalWrite(STEPPER_PIN_1, LOW);
        digitalWrite(STEPPER_PIN_2, LOW);
        digitalWrite(STEPPER_PIN_3, LOW);
        digitalWrite(STEPPER_PIN_4, HIGH);
        break;
      case 1:
        digitalWrite(STEPPER_PIN_1, LOW);
        digitalWrite(STEPPER_PIN_2, LOW);
        digitalWrite(STEPPER_PIN_3, HIGH);
        digitalWrite(STEPPER_PIN_4, LOW);
        break;
      case 2:
        digitalWrite(STEPPER_PIN_1, LOW);
        digitalWrite(STEPPER_PIN_2, HIGH);
        digitalWrite(STEPPER_PIN_3, LOW);
        digitalWrite(STEPPER_PIN_4, LOW);
        break;
      case 3:
        digitalWrite(STEPPER_PIN_1, HIGH);
        digitalWrite(STEPPER_PIN_2, LOW);
        digitalWrite(STEPPER_PIN_3, LOW);
        digitalWrite(STEPPER_PIN_4, LOW);
    }
  }
  step_number++;
  
  if (step_number > 3) {
    step_number = 0;
  }
}