This hookup works for me with an Arduino Nano.
Arduino pin 8 to In 1 on ULN2003 module, motor plugs into module socket.
10 to In 2 " " "
9 to In 3 " " "
11 to In 4 " " "
And works with the Arduino stepper library, here's the "stepper_oneRevolution" example sketch from the stepper library, modified for the 28BYJ-48, steps per revolution changed to 2048, speed changed to 8 RPM (16 RPM is about max for the 28BYJ-48 without missing steps.
/*
Stepper Motor Control - one revolution
This program drives a unipolar or bipolar stepper motor.
The motor is attached to digital pins 8 - 11 of the Arduino.
The motor should revolve one revolution in one direction, then
one revolution in the other direction.
Created 11 Mar. 2007
Modified 30 Nov. 2009
by Tom Igoe
*/
#include <Stepper.h>
const int stepsPerRevolution = 2048; // change this to fit the number of steps per revolution
// for your motor
// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);
void setup() {
// set the speed at 60 rpm:
myStepper.setSpeed(8);
// initialize the serial port:
Serial.begin(9600);
}
void loop() {
// step one revolution in one direction:
Serial.println("clockwise");
myStepper.step(stepsPerRevolution);
delay(500);
// step one revolution in the other direction:
Serial.println("counterclockwise");
myStepper.step(-stepsPerRevolution);
delay(500);
}