// EJERCICIO 3
// NOMBRE: Alejandro Callison Mendieta
// NUMERO DE CUENTA: 0601200401443
#include <DHT.h>
#include <Servo.h>
#include <LiquidCrystal_I2C.h>
#define DHTPIN 2
#define DHTTYPE DHT22
#define TRIG 6
#define ECHO 7
#define LED 8
#define BUZZER 9
#define SERVO_PIN 10
DHT dht(DHTPIN, DHTTYPE);
Servo barrera;
LiquidCrystal_I2C lcd(0x27, 16, 2);
float temperatura;
float humedad;
long duracion;
float distancia;
void setup() {
Serial.begin(9600);
dht.begin();
lcd.init();
lcd.backlight();
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
pinMode(LED, OUTPUT);
pinMode(BUZZER, OUTPUT);
barrera.attach(SERVO_PIN);
barrera.write(0);
digitalWrite(LED, LOW);
digitalWrite(BUZZER, LOW);
lcd.setCursor(0, 0);
lcd.print("Sistema");
lcd.setCursor(0, 1);
lcd.print("Integrado");
delay(2000);
lcd.clear();
}
void loop() {
temperatura = dht.readTemperature();
humedad = dht.readHumidity();
if (isnan(temperatura) || isnan(humedad)) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Error Sensor");
lcd.setCursor(0, 1);
lcd.print("DHT22");
delay(2000);
return;
}
digitalWrite(TRIG, LOW);
delayMicroseconds(2);
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
duracion = pulseIn(ECHO, HIGH, 30000);
distancia = duracion * 0.034 / 2;
Serial.print("Temp: ");
Serial.print(temperatura);
Serial.println(" C");
Serial.print("Hum: ");
Serial.print(humedad);
Serial.println(" %");
Serial.print("Distancia: ");
Serial.print(distancia);
Serial.println(" cm");
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temperatura);
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("Hum: ");
lcd.print(humedad);
lcd.print(" %");
delay(1500);
if (temperatura > 35 || humedad < 35) {
digitalWrite(LED, HIGH);
digitalWrite(BUZZER, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("ALERTA");
lcd.setCursor(0, 1);
lcd.print("AMBIENTAL");
delay(2000);
} else {
digitalWrite(LED, LOW);
digitalWrite(BUZZER, LOW);
}
if (distancia > 0 && distancia < 10) {
barrera.write(90);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Acceso");
lcd.setCursor(0, 1);
lcd.print("Autorizado");
delay(500);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Acceso Autorizado");
lcd.setCursor(0, 1);
lcd.print("Alejandro Callison");
unsigned long tiempoInicio = millis();
while (millis() - tiempoInicio < 3000) {
lcd.scrollDisplayLeft();
delay(300);
}
barrera.write(0);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Barrera");
lcd.setCursor(0, 1);
lcd.print("Cerrada");
delay(1000);
while (distancia > 0 && distancia < 10) {
digitalWrite(TRIG, LOW);
delayMicroseconds(2);
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
duracion = pulseIn(ECHO, HIGH, 30000);
distancia = duracion * 0.034 / 2;
delay(300);
}
lcd.clear();
}
delay(500);
}