#include "AsyncTaskLib.h"
int pir_toilet = 14;
int pir_cocina = 27;
int pir_comedor = 26;
bool Toilet_state = 0;
bool Cocina_state = 0;
bool Comedor_state = 0;
int luz_toilet = 4;
int luz_cocina = 2;
int luz_comedor = 15;
int tiempo_espera = 5000; //minimo 5 segundos
AsyncTask asyncTask1(tiempo_espera, []() {
digitalWrite(luz_toilet, LOW);
});
AsyncTask asyncTask2(tiempo_espera, []() {
digitalWrite(luz_cocina, LOW);
});
AsyncTask asyncTask3(tiempo_espera, []() {
digitalWrite(luz_comedor, LOW);
});
void setup()
{
pinMode(luz_toilet, OUTPUT);
pinMode(luz_cocina, OUTPUT);
pinMode(luz_comedor, OUTPUT);
pinMode(pir_toilet, INPUT);
pinMode(pir_cocina, INPUT);
pinMode(pir_comedor, INPUT);
}
void loop()
{
Toilet_state = digitalRead(pir_toilet);
Cocina_state = digitalRead(pir_cocina);
Comedor_state = digitalRead(pir_comedor);
if (Toilet_state == 1 && !asyncTask1.IsActive()) {
digitalWrite(luz_toilet, HIGH);
asyncTask1.Start();
}
asyncTask1.Update();
if (Cocina_state == 1) {
digitalWrite(luz_cocina, HIGH);
asyncTask2.Start();
}
asyncTask2.Update();
if (Comedor_state == 1) {
digitalWrite(luz_comedor, HIGH);
asyncTask3.Start();
}
asyncTask3.Update();
delay(500);
}