//María Isabel Yanes Castillo
//0321200500712
#include <LiquidCrystal.h>
#include <DHT.h>
#include <Servo.h>
LiquidCrystal lcd(12,11,5,4,3,2);
#define DHTPIN 7
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
const int trigPin = 9;
const int echoPin = 10;
Servo miServo;
int led = 8;
int buzzer = 13;
long duracion;
float distancia;
String texto = "Acceso Autorizado MARIA YANES ";
int posicion = 0;
int acceso = 0;
void setup() {
lcd.begin(16,2);
dht.begin();
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(led, OUTPUT);
pinMode(buzzer, OUTPUT);
miServo.attach(6);
miServo.write(0);
}
void loop() {
float temperatura = dht.readTemperature();
float humedad = dht.readHumidity();
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duracion = pulseIn(echoPin, HIGH);
distancia = duracion * 0.034 / 2;
if (temperatura > 35 || humedad < 35) {
digitalWrite(led, HIGH);
tone(buzzer, 1000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("ALERTA");
lcd.setCursor(0,1);
lcd.print("AMBIENTAL");
delay(2000);
}
else {
digitalWrite(led, LOW);
noTone(buzzer);
}
if (distancia < 10 && acceso == 0) {
acceso = 1;
miServo.write(90);
for(int i = 0; i < 30; i++) {
lcd.clear();
lcd.setCursor(0,0);
String visible = texto.substring(posicion);
if(visible.length() < 16) {
visible += texto.substring(0,16-visible.length());
}
lcd.print(visible.substring(0,16));
lcd.setCursor(0,1);
lcd.print("Bienvenido");
posicion++;
if(posicion >= texto.length()) {
posicion = 0;
}
delay(100);
}
delay(3000);
miServo.write(0);
}
if(distancia >= 10){
acceso = 0;
}
if(distancia >= 10){
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(500);
}
}