Quisiera ayuda para encender un led con un botón y después de 5 segundos se apague aunque el boton siga presionado. y también cuando se suelte el boton se apague.
Ademas de que en el mismo se encienda con un if (boton=HIGH && sensor=HIGH) y se apague despues de 5 s.
Detecta el cambio en el boton de 0 a 1 por ejemplo, o sea de no presionado a presionado
Con ese cambio acciona un timer que puedes hacer con millis(), al cabo de 5 segundos apagas el led.
Y si aún no pasaron los 5 seg y el led sigue prendido y sueltas el botón al soltarlo lo accionas también.
Va mi ejemplo, solo esperaba me mostraras algo hecho
Ajusta a tus botones y sensores.
const byte botonPin = 2; // pin conectado a 2
const byte ledPin = 13; // uso LED conectado a Pin 13
bool statusBtn;
bool statusBtnAnterior; // para saber si cambió
bool estadoLed;
unsigned long start;
void setup() {
}
void loop() {
statusBtn = digitalRead(botonPin); // leo el estado del pin
if (statusBtn && !statusBtnAnt) {
estadoLed = true; // activo el led
start = millis() + 5000UL; // cargo start con valor de millis() + 5seg
}
if (!statusBtn && statusBtnAnt) // si sueltas el boton apago el led
estadoLed = false;
if (millis()>start && estadoLed) // si el boton esta presionado y pasaron 5 seg apago el led
estadoLed = false;
statusBtnAnt = statusBtn;
if (estadoLed)
digitalWrite(ledPin, HIGH);
else
digitalWrite(ledPin, LOW);
}
Gracias por la ayuda me sirvió bien Ahora revisare para agregar otra condición, si el led esta apagado, botón 1 esta presionado y se presiona un segundo botón, se encienda el led por 5 segundos igual.