/*
Paso a Paso unipolar 28BYJ-48 con Driver ULN2003.
En este programa se usa la secuencia de paso completo simple.
Se energiza de a una sola bobina por vez.
Hay que ver la tabla de este tipo de secuencia para aplicar en la programación.
*/
int IN1 = 8;
int IN2 = 9;
int IN3 = 10;
int IN4 = 11;
// Se debe respetar el tiempo mínimo. Se elije no trabajar al límite.
int demora = 20; // demora entre pasos, no debe ser menor a 10 ms (fabricante)
void setup() {
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
}
void loop() {
for (int i = 0; i < 512; i++) // 512*4 = 2048 pasos para un giro completo
{
digitalWrite(IN1, HIGH); // paso 1
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
delay(demora);
digitalWrite(IN1, LOW); // paso 2
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
delay(demora);
digitalWrite(IN1, LOW); // paso 3
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
delay(demora);
digitalWrite(IN1, LOW); // paso 4
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
delay(demora);
}
// Se detiene el motor por 5 segundos antes de que se ejecute todo nuevamente
// (antes de dar otra vuelta del rotor). Se envía un nivel bajo a todas las entradas
// para desenergizar las bobinas por 5 segundos.
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
delay(5000);
}