Униполярные ШД с ULN2003

Добрый день! Надо для одного проекта управлять униполярными шд (5 проводов). Подвернулись драйвера ULN2003. Работал раньше только с биполярными на L298N и не знаю как работает код на ULN2003. Нашлось вот это:

#define IN1 2
#define IN2 3
#define IN3 4
#define IN4 5
 
int Steps = 0;
boolean Direction = true;
unsigned long last_time;
unsigned long currentMillis;
int steps_left=4095;
long time;
 
void setup(){
  Serial.begin(115200);
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
// delay(1000);
}
 
void loop(){
  while(steps_left>0){
  currentMillis = micros();
  if(currentMillis-last_time>=1000){
    stepper(1);
    time=time+micros()-last_time;
    last_time=micros();
    steps_left--;
    }
  }
 
  Serial.println(time);
  Serial.println("Wait...!");
  delay(2000);
  Direction=!Direction;
  steps_left=4095;
}
 
void stepper(int xw){
  for (int x=0;x<xw;x++){
  switch(Steps){
    case 0:
    digitalWrite(IN1, LOW);
    digitalWrite(IN2, LOW);
    digitalWrite(IN3, LOW);
    digitalWrite(IN4, HIGH);
    break;
    case 1:
      digitalWrite(IN1, LOW);
      digitalWrite(IN2, LOW);
      digitalWrite(IN3, HIGH);
      digitalWrite(IN4, HIGH);
      break;
    case 2:
      digitalWrite(IN1, LOW);
      digitalWrite(IN2, LOW);
      digitalWrite(IN3, HIGH);
      digitalWrite(IN4, LOW);
      break;
    case 3:
      digitalWrite(IN1, LOW);
      digitalWrite(IN2, HIGH);
      digitalWrite(IN3, HIGH);
      digitalWrite(IN4, LOW);
      break;
    case 4:
      digitalWrite(IN1, LOW);
      digitalWrite(IN2, HIGH);
      digitalWrite(IN3, LOW);
      digitalWrite(IN4, LOW);
      break;
    case 5:
      digitalWrite(IN1, HIGH);
      digitalWrite(IN2, HIGH);
      digitalWrite(IN3, LOW);
      digitalWrite(IN4, LOW);
      break;
    case 6:
      digitalWrite(IN1, HIGH);
      digitalWrite(IN2, LOW);
      digitalWrite(IN3, LOW);
      digitalWrite(IN4, LOW);
      break;
    case 7:
      digitalWrite(IN1, HIGH);
      digitalWrite(IN2, LOW);
      digitalWrite(IN3, LOW);
      digitalWrite(IN4, HIGH);
      break;
    default:
      digitalWrite(IN1, LOW);
      digitalWrite(IN2, LOW);
      digitalWrite(IN3, LOW);
      digitalWrite(IN4, LOW);
      break;
  }
  SetDirection();
  }
}
void SetDirection(){
  if(Direction==1){ Steps++;}
  if(Direction==0){ Steps--; }
  if(Steps>7){Steps=0;}
  if(Steps<0){Steps=7; }
}

Подскажите пожалуйста, это можно сделать попроще и покороче? Можно с помощью библиотеки Stepper униполярными двигателями управлять?
Возможно, спрашиваю очевидное. Но с униполярными ни разу не работал.

https://docs.arduino.cc/learn/electronics/stepper-motors/#unipolar-stepper-circuit-and-schematic

Не работает?

Спасибо, попробую. :+1: