Necesito hacer un semáforo con una función milis en lugar de delay el problema es que no pasa del primer led.
Código:
const int PinV=6,PinA=7,PinR=8;
long previousMillis = 0;
int i=0;
long interval = 0;
void setup() {
pinMode(PinV, OUTPUT);
pinMode(PinA, OUTPUT);
pinMode(PinR, OUTPUT);
int tiempo, tiempo2, tiempo3,a,b,c;//Variables para control de tiempos
}
void loop(){
int tiempo, a;
tiempo = analogRead(0);//Declarando el PIN analogo para entrada de Voltaje
tiempo = map(tiempo, 0, 1023, 0, 60);//Definiendo el rango de numeros que necesito para los tiempos max 60s
a=0;//Se define como variable contadora se iguala a 0 para el inicio
unsigned long currentMillis = millis();
if(currentMillis - tiempo > interval) {
tiempo = currentMillis;
if(i==0){
digitalWrite(PinV, HIGH);
digitalWrite(PinA, LOW);
digitalWrite(PinR, LOW);
interval=2000;
}
else if(i==1 or i==3 or i==5 or i==7 or i==9){
interval=250;
digitalWrite(PinA, LOW);
digitalWrite(PinV, HIGH);
digitalWrite(PinR, LOW);
}
else if(i==2 or i==4 or i==6 or i==8){
interval=250;
digitalWrite(PinA, LOW);
digitalWrite(PinV, LOW);
digitalWrite(PinR, LOW);
}
else if(i==10){
interval=2000;
digitalWrite(PinV, LOW);
digitalWrite(PinR, LOW);
digitalWrite(PinA, HIGH);
}
else if (i==11){
digitalWrite(PinV, LOW);
digitalWrite(PinA, LOW);
digitalWrite(PinR, HIGH);
i=-1;
}
i++;
}
}