.
Hola maestros todos
En el código siguiente realizo una intermitencia en dos LEDS independientemente uno del otro (funciona).
Ademas quisiera utilizar millis para separar el tiempo entre pasos del motor p.a.p..
Como comprobareis, el motor no funciona.
Seguro es una incorrección de código, me podeis dar un empujón ???.
Un saludo !!!
[code]
/*
Utiliza el motor UNIPOLAR NMB-PM35L-048. Con el controlador LN2003A.
Se detiene X segundos y luego continua nuevamente.
Secuencia de PASO DOBLE conectando dos bobinas por paso.
Segun la cifra "< X" en FOR dara mas o menos pasos:
Alimentar ULN2003 con fuente de alimentacion externa de 12 - 24 V.
Dos LEDS con intermitencia independiente por "millis".
*/
// PASO COMPLETO SIMPLE
int INTERPASO = 3; // INTERPASO: Tiempo entre pasos, no debe ser menor a 10 ms.
int INTERPASOX = 2000; // INTERPASOX: Tiempo de DESCANSO.
//********************************************
boolean estadoLED7 = true;
boolean estadoLED12 = true;
unsigned long LED7Tiempo;
unsigned long LED12Tiempo;
unsigned long TiempoPaso1;
unsigned long TiempoPaso2;
unsigned long TiempoPaso3;
unsigned long TiempoPaso4;
unsigned long TiempoPaso5;
int INTERVALO_LED_7 = 513 ; //tiempo de INTERVALO 7
int INTERVALO_LED_12 = 200 ; //tiempo de INTERVALO 12
//***********************************************
void setup()
{
Serial.begin(9600);
Serial.println(" =============== M_MOTOR_PAP_UNIPOLAR_MILLIS ========= ");
Serial.println("");
pinMode(7, OUTPUT); // pin digital 7 de Arduino a intermitente
pinMode(8, OUTPUT); // pin digital 8 de Arduino a IN1 de modulo controlador
pinMode(9, OUTPUT); // pin digital 9 de Arduino a IN2 de modulo controlador
pinMode(10, OUTPUT); // pin digital 10 de Arduino a IN3 de modulo controlador
pinMode(11, OUTPUT); // pin digital 11 de Arduino a IN4 de modulo controlador
pinMode(12, OUTPUT); // pin digital 12 de Arduino a intermitente
}
void loop()
{
if ((millis()- LED7Tiempo) >= INTERVALO_LED_7)// Tiempo 513
{
estadoLED7 = !estadoLED7;
digitalWrite (7, estadoLED7);
Serial.print("======== LED 7 = ");
Serial.println(estadoLED7);
LED7Tiempo = millis();
}
if ((millis() - LED12Tiempo) >= INTERVALO_LED_12)// Tiempo 200
{
estadoLED12 = !estadoLED12;
digitalWrite (12, estadoLED12);
Serial.print("======== LED 12 = ");
Serial.println(estadoLED12);
LED12Tiempo = millis();
}
// ************************************* MOTOR PAP *********************************
for (int i = 0; i < 145; i++) // Segun la cifra "< X" dara mas o menos pasos.
{
if
((millis()- TiempoPaso1) >= INTERPASO)
{
digitalWrite( 8, HIGH); // paso 1
digitalWrite( 9, HIGH);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
unsigned long TiempoPaso1 = millis();
}
if
((millis()- TiempoPaso2) >= INTERPASO)
{
digitalWrite( 8, LOW); // paso 2
digitalWrite( 9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, LOW);
unsigned long TiempoPaso2 = millis();
}
if
((millis()- TiempoPaso3) >= INTERPASO)
{
digitalWrite( 8, LOW); // paso 3
digitalWrite( 9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
unsigned long TiempoPaso3 = millis();
}
if
((millis()- TiempoPaso4) >= INTERPASO)
{
digitalWrite( 8, HIGH); // paso 4
digitalWrite( 9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, HIGH);
unsigned long TiempoPaso4 = millis();
}
if
((millis()- TiempoPaso5) >= INTERPASOX)
{ digitalWrite( 8, LOW);
digitalWrite( 9, LOW);
digitalWrite(10, LOW); // BLOQUE DE DESCANSO
digitalWrite(11, LOW);
unsigned long TiempoPaso5 = millis();
}
}
}
// =============================== FIN ==============================
[/code]type or paste code here
.