// Proyecto 2 fase inicial de "casa domotica"
// Grupo 11 Erbin Lopez, Carlos Patzan, Johnny Galvan
// Implementacion de 2 sensores y 2 actuadores
#include <Wire.h>
#include <DHT.h>
#include <LiquidCrystal_I2C.h>
#define DHT22_PIN 23 // Pin GPIO23 al DHT22
#define BUZZER_PIN 5 // PIN del buzzer
#define BUZZER_DURATION 10000 // valor que le damos en milisengundos
#define BLINK_DURATION 1000 // Duracion de Parpadeo
LiquidCrystal_I2C lcd(0x27, 16, 2); //direccionamiento
DHT dht22(DHT22_PIN, DHT22);
int led =13;
int pirdata =15 ;
int pirstate =LOW ;
int value =0;
void setup() {
dht22.begin();
lcd.init();
lcd.backlight();
pinMode(led, OUTPUT);
pinMode(pirdata, INPUT);
pinMode(BUZZER_PIN, OUTPUT);
Serial.begin(9600);
}
void loop() {
value = digitalRead(pirdata);
if (value == HIGH) {
digitalWrite(led, HIGH);
if (pirstate == LOW) {
Serial.println("Movimiento detectado");
pirstate = HIGH;
digitalWrite(BUZZER_PIN, HIGH);// Encendemos el buzzer
delay(BUZZER_DURATION);// damos 10 segundos
digitalWrite(BUZZER_PIN, LOW);// Apagamos el buzzer
for (int i = 0; i < 10; i++) {
digitalWrite(led, HIGH);
delay(BLINK_DURATION);
digitalWrite(led, LOW);
delay(BLINK_DURATION);
}
}
} else {
digitalWrite(led, LOW);
if (pirstate == HIGH) {
Serial.println("Sin Movimiento");
pirstate = LOW;
}
}
float humi = dht22.readHumidity(); // lectura de humedad
float tempC = dht22.readTemperature(); // lectura de temperatura
lcd.clear();
if (isnan(tempC) || isnan(humi)) {
lcd.setCursor(0, 0);
lcd.print("fallo");
} else {
lcd.setCursor(0, 0); // posicionamiento de pantalla
lcd.print("Temp: ");
lcd.print(tempC); // desplega inf de temperatura
lcd.print("°C");
lcd.setCursor(0, 1); // posicionamiento de pantalla
lcd.print("Humedad: ");
lcd.print(humi); // desplega inf de humedad
lcd.print("%");
}
delay(2000);
}