Go Down

Topic: Activacion de leds con millis (Read 1 time) previous topic - next topic

7orres

Pues la verdad que esto se me hace muy dificil,
Lo que pretendo es activar diferentes leds y cada uno con diferente tiempo, ejemplo
Pulsador 1 activa led 1 por 3minutos
Pulsador 2 activa led 2 por 5 minutos
Pulsador 3 activa led 3 por 2 minutos
 
Es posible esto? 
Gracias espero entienda y me ayuden con este prollecto
Se que hay muchos post pero casi ninguno deja claro  :smiley-confuse:

Luis144

Creo que es posible hacerlo con "Switch case", pero los tiempos tan largos no sabría cual es la forma mas óptima de hacerlo.

Code: [Select]
switch (var) {
   case 1:
     //pulsador1=High, encender led1 por "x" tiempo
     break;
   case 2:
     //pulsador2=High, encender led2 por "x" tiempo
     break;
  case 3:
     //pulsador3=High, encender led3 por "x" tiempo
     break;
 }


Esto es solo un ejemplo de forma burda.

Saludos.

surbyte

Esta tarea de instituto la he/hemos resuelto un montón de veces.
1ro. Mira el ejemplo BlinkWithoutDelay.ino
2do. Busca ejemplos de millis() en este foro, hay muchos.

tienes que usar millis() y no usar delay().

lees los 3 pulsadores asegurandote que no tengan rebotes y todo eso.
Supongamos que accionas los leds con el pulsador en HIGH
Si se presiona un boton1, cargas una variable unsigned long start1 con el valor de millis()
lo mismo para boton2 y boton3 
algo asi

Code: [Select]
if (button1 == HIGH) {
   start1 = millis();
   activoled1 = true;
   digitalWrite(Led1, HIGH);   // prendo el led1
}

// luego de hacerlo mismo con todos los leds y botones

if (activoled1) {
   if (millis() - start1 > 3000UL) {  // UL es porque es un Unsigned long
     activoled1 = false;
     digitalWrite(Led1, LOW);  // apago led1
   }
}


bueno te he mostrado mas o menos por donde iría.
hay que definir cada variable de modo que no preguntes por cada error que te de esto porque es un código a medio camino.
A trabajar!!!

7orres

Muchas  gracias a las reapuesta por ahora estoy fuera  de casa  ,y respondo con agradecimiento probare esto
Gracias

Go Up