Hola quiero encender 3 o mas led de manera alternada sin usar el delay(). Estoy usando la función millis(), y con dos Led me funciona pero cuando quiero encender el tercero lo hace en distinto tiempo que los dos anteriores. acá va el código.
int ledT1 = 13; // Led testigo (led Rojo)
int ledT2 = 12; // Led testigo (led verde)
int ledOpc1 = 8; // led amarillo
int ledOpc2 = 9; // led rojo bis
int boton = 2; // pin donde se encuentra el pulsador
int LedT1State = LOW;
int LedT2State = LOW;
int LedT3State = LOW;
boolean estadoP1;
long previousMillis = 0;
long verdetime = 0;
long amatime = 0;
long intRojo = 4000; // intervalo del parpadeo (en milisegundos)
long intVerde = 4000; //segundo intervalo
long intAma = 4000;
void setup()
{
pinMode(ledT1, OUTPUT);
pinMode(ledT2, OUTPUT);
pinMode(ledOpc1, OUTPUT);
pinMode(ledOpc2, OUTPUT);
pinMode(boton, INPUT);
previousMillis = millis();
verdetime = (millis()+1000);
amatime = (millis()+1000);
}
void loop()
{
unsigned long currentMillis = millis(); // Se toma el tiempo actual
estadoP1 = digitalRead(boton);
if ((estadoP1 == true) & (LedT1State==HIGH))
{
digitalWrite( ledOpc1, LOW);
}
if (millis() - previousMillis > intRojo){
previousMillis = currentMillis;
if (LedT1State == LOW)
{
LedT1State = HIGH;
}
else
{
LedT1State = LOW;
}
digitalWrite(ledT1, LedT1State);
}
//------------------------------fin Led Testigo rojo -----------------------------------
//------------------------------Comienzo luz verd ------------------------------
estadoP1 = digitalRead(boton);
if ((estadoP1 == true) & (LedT2State==HIGH))
{
digitalWrite( ledOpc1, HIGH);
}
if (millis() - verdetime > intVerde){
verdetime = currentMillis;
if (LedT2State == LOW)
{
LedT2State = HIGH;
}
else
{
LedT2State = LOW;
}
digitalWrite(ledT2, LedT2State);
}
////---------------------- Fin Led Testigo verde ----------------------------
if (millis() - amatime >= intAma){
amatime = currentMillis;
if (LedT3State == LOW)
{
LedT3State = HIGH;
}
else
{
LedT3State = LOW;
}
digitalWrite(ledOpc1, LedT3State);
}
}
La idea es que vayan encendiéndose de manera alternada y que al presionar un pulsador haga algo x.
por ejemplo enciende led1 espera 3 seg se apaga y se enciende el led2 se apaga y se enciende el led3 y se apaga.
Si me pueden ayudar les agradezco (porque me bloquee :D)