Apenas para complementar a informação do Sérgio, o método para ligarmos é alimentar uma bobina de cada vez, modo Full Step, o consumo de energia é maior, porém o torque é superior.
O Post vai ficar enrome, mas não consigo visualizar isso sem que você use um teclado matricial ou uma interface pra acionar o que deseja.
adicionado 44 minutos depois
Eu ainda, acredito que a sugestão do @Ricardo S Ferreira, de fazer um acionamento simples é o ideal.
Como disse o @Sérgio Lembo , do Arduino você não escapa. Não tenho certeza que será uma programação muito longa, mas pra tenho ma programação em HALF-STEP, dê uma olhada de como ficaria.
void loop()
{//Posição 1 = 1000
digitalWrite(bobina1,HIGH);//Definir nível lógico da bobina 1 = 1
digitalWrite(bobina2,LOW);//Definir nível lógico da bobina 2 = 0
digitalWrite(bobina3,LOW);//Definir nível lógico da bobina 3 = 0
digitalWrite(bobina4,LOW);//Definir nivel lógico da bobina 4 = 0
delay(tempo);//tempo entre uma posição e outra
//Posição 2 = 1100
digitalWrite(bobina1,HIGH);//Definir nivel lógico da bobina 1 = 1
digitalWrite(bobina2,HIGH);//Definir nivel lógico da bobina 2 = 1
digitalWrite(bobina3,LOW);//Definir nivel lógico da bobina 3 = 0
digitalWrite(bobina4,LOW);//Definir nivel lógico da bobina 4 = 0
delay(tempo);//tempo entre uma posição e outra
//Posição 3 = 0100
digitalWrite(bobina1,LOW);//Definir nivel lógico da bobina 1 = 0
digitalWrite(bobina2,HIGH);//Definir nivel lógico da bobina 2 = 1
digitalWrite(bobina3,LOW);//Definir nivel lógico da bobina 3 = 0
digitalWrite(bobina4,LOW);//Definir nivel lógico da bobina 4 = 0
delay(tempo);//tempo entre uma posição e outra
66
//Posição 4 = 0110
digitalWrite(bobina1,LOW);//Definir nivel lógico da bobina 1 = 0
digitalWrite(bobina2,HIGH);//Definir nivel lógico da bobina 2 = 1
digitalWrite(bobina3,HIGH);//Definir nivel lógico da bobina 3 = 1
digitalWrite(bobina4,LOW);//Definir nivel lógico da bobina 4= 0
delay(tempo);//tempo entre uma posição e outra
//Posição 5 = 0010
digitalWrite(bobina1,LOW);//Definir nivel lógico da bobina 1 = 0
digitalWrite(bobina2,LOW);//Definir nivel lógico da bobina 2 = 0
digitalWrite(bobina3,HIGH);//Definir nivel lógico da bobina 3 = 1
digitalWrite(bobina4,LOW);//Definir nivel lógico da bobina 4 = 0
delay(tempo);//tempo entre uma posição e outra
//Posição 6 = 0011
digitalWrite(bobina1,LOW);//Definir nivel lógico da bobina 1 = 0
digitalWrite(bobina2,LOW);//Definir nivel lógico da bobina 2 = 0
digitalWrite(bobina3,HIGH);//Definir nivel lógico da bobina 3 = 1
digitalWrite(bobina4,HIGH);//Definir nivel lógico da bobina 4 = 1
delay(tempo);//tempo entre uma posição e outra
//Posição 7 = 0001
digitalWrite(bobina1,LOW);//Definir nivel lógico da bobina 1 = 0
digitalWrite(bobina2,LOW);//Definir nivel lógico da bobina 2 = 0
digitalWrite(bobina3,LOW);//Definir nivel lógico da bobina 3 = 0
digitalWrite(bobina4,HIGH);//Definir nivel lógico da bobina 4 = 1
delay(tempo);//tempo entre uma posição e outra
//Posição 8 = 1001
digitalWrite(bobina1,HIGH);//Definir nivel lógico da bobina 1 = 1
digitalWrite(bobina2,LOW);//Definir nivel lógico da bobina 2 = 0
digitalWrite(bobina3,LOW);//Definir nivel lógico da bobina 3 = 0
digitalWrite(bobina4,HIGH);//Definir nivel lógico da bobina 4 = 1
delay(tempo);//tempo entre uma posição e outra
}
adicionado 45 minutos depois
Obviamente, há outros modo de programação mais "clean".