Saludo estimados, soy nuevo trabajando con arduino,y tengo una consulta...
Quiero hacer un programa en el cual un led se quede encendido mientras el sensor detecte movimiento, y que si el sensor en un lapso de 5 segundos no detecto movimiento, entonces el led se apague.
alguna libreria que me ayude con eso?
estuve intentando con millis(), pero no obtuve resultado.
Prueba esto:
unsigned long marca, millisprevio;
#define led 13
#define sensor 2
void setup () {
pinMode (led, OUTPUT);
pinMode (sensor, INPUT_PULLUP);
digitalWrite(led, HIGH);
}
void loop() {
// (*)Resto del código que entre otras cosas encendera el led cuando proceda.
marca = millis() - millisprevio;
if (digitalRead (sensor) == LOW) {//Actualiza si hay presencia para no parar
marca = 0;
millisprevio = millis ();
}
if (marca >= 5000) {//Tiempo de encendido sin presencia
digitalWrite(led, LOW);
}
}
EDICION:
Añadida linea comentada (*) para mejor comprensión del contexto.
Podrías hacer algo así (presupongo que el sensor envía un HIGH)
if(digitalRead(pinSensor) == HIGH) {
digitalWrite(pinLed, HIGH);
unsigned long tiempoOn = millis();
while(digitalRead(pinSensor) == HIGH) { // espera que se desactive el sensor
if(millis() - tiempoOn >= 5000UL) {
break; // si pasan 5 segundos sin desactivarse sale del while
}
}
digitalWrite(pinLed, LOW);
}
Atento que es solo un ejemplo y hasta que no se apague el LED (o sea pasaron 5 segundos como máximo) no puede hacer otra tarea porque queda dentro del while().
Saludos
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.