debo encender un led con un pulsador sin usar delay por que al mismo tiempo debo encender otro led con otro pulsador, luego estos se apaguen en diferente tiempo.
si uso delay no puedo encender los led al mismo tiempo, debo esperar que termine el delay para encender el otro led
con este código solucione mi problema de ahy se puede asignar varias entradas y salidas según la necesidad, en mi caso he insertado 5 entradas y 5 salidas, espero este código le sirva a alguien
Algunas correcciones para evitar overflow o fallos cuando arduino lleve mas de 32768 mseg porque has definido algunos intervalos como interos y eso implica que a los 32.768 segundos estarás en problemas.
Todo lo que use milllils() debe configurarse como unsigned long. Recuérdalo!!
int ledPin[4] = {13, 8};
int inSelector[4] = { 4, 5};
unsigned long timer1;
unsigned long timer2;
unsigned long tiempos[4];
int espera[4] = {40000,40000};
boolean ejecutando[4] = {false,false};
void setup() {
for (int i = 0; i < 2; i++){
pinMode(ledPin[i],OUTPUT);
pinMode(inSelector[i],INPUT);
digitalWrite(inSelector[i],LOW);
}
timer1 = 40000;
timer2 = 40000;
}
void loop() {
for (int i= 0; i < 2; i++){
if (ejecutando[i]==false){
if (digitalRead(inSelector[i])==0){
switch (digitalRead(inSelector[i])){
case LOW:
espera[i] = timer2;
break;
case HIGH:
espera[i] = timer1;
break;
}
tiempos[i] = millis();
}
else if (digitalRead(inSelector[i])==1){
espera[i] = 0;
}
}
}
if ((millis()-tiempos[0]) < espera[0]){
ejecutando[0] = true;
digitalWrite(ledPin[0],HIGH);
}
else {
ejecutando[0] =false;
digitalWrite(ledPin[0],LOW);
}
if ((millis()-tiempos[1]) < espera[1]){
ejecutando[1] = true;
digitalWrite(ledPin[1],HIGH);
}
else {
ejecutando[1] =false;
digitalWrite(ledPin[1],LOW);
}
}
El resto del código puede mejorarse pero si te funciona, nada que decir entonces.