Necesito codigo para apagar un led accionando un pulsador y que este dure 10 segundos encendido luego de pulsar y posteriormente se apague, lo mismo para encender, que dure 3 se segundos y luego encienda de forma indefinida mientras no se accione el pulsador. He intentado hacerlo con delay pero enciende y apaga de forma intermitente y no es lo que quiero. quien me ayuda?
Te doy una idea descriptiva (no código) que en principio puedes probar con delay() aunque lo ideal es usar millis(), pero vamos de a poco.
Defines una variable que guarde el estado (encendido/apagado)
Algo así
bool encendido = false ;
Luego en el loop()
Lees el estado del botón.
Si está pulsado {
Si encendido == false { // esta apagado entonces enciende
Espera 3 segundos;
Enciende;
encendido = true;
}
Sino { // o sea, esta encendido, debe apagar
Enciende;
Espera 10 segundos;
Apaga;
encendido = false;
}
}
Aunque parezca funcionar bien, al menos hace lo que pides, te aconsejo que busques en Documentación el tema sobre lectura correcta de pulsadores.
Saludos
Realmente es de gran ayuda pero cuando los bits de delay se agotan me causa problemas y acciona antes del tiempo especificado, me gustaría ver cómo lo harías con millis()
Estaba reviendo lo que te escribí y se me deslizó un error...
Si el led ya está encendido para que diablos lo enciendo antes de la demora de 10 segundos?
La verdad que tu comentario me sorprende, no debería actuar a destiempo, sube tu código (fijate en las Normas del foro la forma correcta de hacerlo) y lo vemos.
Lo de usar millis() lo vemos después.
Saludos
Antes de sugerir como hacerlo con millis() ve a Documentación y lee los tutoriales. Si los entiendes te será fácil hacerlo.
This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.