#include <DHT.h>
// Definición de pines
const int switchPuerta = 2;
const int switchVentana = 3;
const int ledSala = 4;
const int buzzer = 5;
const int servoPin = 6; // Pin PWM para simular el servo
const int sensorPin = A0;
// Crear instancia de objeto para el sensor DHT22
DHT dht(sensorPin, DHT22);
// Variables de control
bool puertaAbierta = false;
bool ventanaAbierta = false;
bool pedroEnCasa = false;
void setup() {
pinMode(switchPuerta, INPUT_PULLUP);
pinMode(switchVentana, INPUT_PULLUP);
pinMode(ledSala, OUTPUT);
pinMode(buzzer, OUTPUT);
// Inicializar el sensor DHT22
dht.begin();
}
void loop() {
// Verificar el estado del switch de la puerta
if (digitalRead(switchPuerta) == HIGH) {
puertaAbierta = !puertaAbierta;
digitalWrite(ledSala, puertaAbierta ? HIGH : LOW);
delay(2000); // Pequeño retraso para evitar el rebote del interruptor
}
// Verificar el estado del switch de la ventana
if (digitalRead(switchVentana) == HIGH) {
ventanaAbierta = !ventanaAbierta;
digitalWrite(buzzer, ventanaAbierta ? HIGH : LOW);
delay(2000); // Pequeño retraso para evitar el rebote del interruptor
}
// Leer la temperatura del sensor DHT22
float temperatura = dht.readTemperature();
// Controlar el ángulo del servo
int anguloServo = 0; // Inicializar el ángulo del servo como 0 grados
if (pedroEnCasa) {
if (temperatura < 17) {
anguloServo = 0; // Servo apagado
} else if (temperatura >= 18 && temperatura <= 25) {
anguloServo = 90; // Servo a 90 grados
} else {
anguloServo = 180; // Servo a 180 grados
}
}
analogWrite(servoPin, map(anguloServo, 0, 180, 0, 255)); // Controlar el servo con PWM
// Verificar la entrada y salida de Pedro de la casa
pedroEnCasa = puertaAbierta || ventanaAbierta;
delay(2000); // Pequeño retraso para estabilizar la lectura de los switches y el sensor de temperatura
}