Abaixo está o diagrama de conexão do ULN2003 com o Arduino UNO.

Código de exemplo simples:
#include <Arduino.h>
#define IN1 5 // Atribuição de pinos
#define IN2 4
#define IN3 3
#define IN4 2
void setup()
{
pinMode(IN1,OUTPUT); // Define o pino como saída
pinMode(IN2,OUTPUT);
pinMode(IN3,OUTPUT);
pinMode(IN4,OUTPUT);
}
void loop()
{
Phase_A(); // Energiza a fase A
delay(2); // Atraso do passo em ms. Reduza com cautela—valores muito baixos podem causar perda de passos.
Phase_B(); // Energiza a fase B
delay(2);
Phase_C(); // Energiza a fase C
delay(2);
Phase_D(); // Energiza a fase D
delay(2);
}
void Phase_A()
{
digitalWrite(IN1,HIGH); // Pino IN1 em nível alto
digitalWrite(IN2,LOW);
digitalWrite(IN3,LOW);
digitalWrite(IN4,LOW);
}
void Phase_B()
{
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH); // Pino IN2 em nível alto
digitalWrite(IN3,LOW);
digitalWrite(IN4,LOW);
}
void Phase_C()
{
digitalWrite(IN1,LOW);
digitalWrite(IN2,LOW);
digitalWrite(IN3,HIGH); // Pino IN3 em nível alto
digitalWrite(IN4,LOW);
}
void Phase_D()
{
digitalWrite(IN1,LOW);
digitalWrite(IN2,LOW);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH); // Pino IN4 em nível alto
}