#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
}
$abcdeabcde151015202530fghijfghij