#include <Servo.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
Servo puerta, puerta2;
LiquidCrystal_I2C lcd(0x27,16,2);
DHT sensor(13, DHT11);
char dato = ' ';//almacenar informacion que llega de la app
byte FAlarma1 = 2, FAlarma2 = 3;
byte dormitorio = 4, scocina = 5, sala = 6, principal = 7;
byte patio1 = 8, patio2 = 9, patio3 = 10, patio4 = 11;
byte pir = 12, trig = 14, echo = 15, buzzer = 16;
byte ventilador=18, sensorflama=27;
float t=0, h=0, ic=0;
long distancia = 0, duracion = 0;
byte lectura = 0, lecturaFlama=0, luminosidad = 0, sw = 0;
int lecturaLuz=0; //0-1023
byte sensorluz=A1;
void setup() {
puerta.attach(23,650,2550);//fisico
puerta2.attach(25,650,2550);//fisico
//puerta.attach(23); //wokwi, mg90,s3003,mg995 996
pinMode(trig, OUTPUT);
pinMode(FAlarma1,OUTPUT);
pinMode(FAlarma2,OUTPUT);
pinMode(dormitorio,OUTPUT);
pinMode(sala,OUTPUT);
pinMode(cocina,OUTPUT);
pinMode(principal,OUTPUT);
pinMode(buzzer,OUTPUT);
pinMode(patio1, OUTPUT);
pinMode(patio2, OUTPUT);
pinMode(patio3, OUTPUT);
pinMode(patio4, OUTPUT);
pinMode(echo, INPUT);
pinMode(pir,INPUT);
pinMode(sensorflama, INPUT);
Serial.begin(9600);
puerta.write(90);
sensor.begin();
lcd.init();
lcd.backlight();
lcd.clear();
lcd.setCursor(3,0);
lcd.print("SISTEMA DE");
lcd.setCursor(3,1);
lcd.print("CALEFACCION");
delay(3000);
lcd.clear();
pinMode(ventilador, OUTPUT);
}
void loop() {
SistemaDeAlarma();
SistemaAutomatico();
SistemaDeCalefaccion();
SistemaDeIncendios();
SistemaIluminacion();
leerdato ();
}
void SistemaDeCalefaccion(){
t=sensor.readTemperature();
h=sensor.readHumidity();
ic=sensor.computeHeatIndex(false);
lcd.setCursor(0,0);
lcd.print("T: "+String(t)+"*C");
lcd.setCursor(0,1);
lcd.print("H: "+String(h)+"% HR");
if(ic>25){
digitalWrite(ventilador, 1);
}
else{
digitalWrite(ventilador, 0);
}
delay(1000);
lcd.clear();
}
void SistemaDeAlarma(){
lectura = digitalRead(pir);
if(lectura == 1){
digitalWrite(FAlarma1,1);
digitalWrite(FAlarma2,1);
tone(buzzer,262);
sw=1;
}
else{
digitalWrite(FAlarma1,0);
digitalWrite(FAlarma2,0);
noTone(buzzer);
}
if(sw==1){
Serial.println("Alarma! - Intrusos en la casa");
sw=0;
delay(5000); //wowki
}
}
void SistemaAutomatico(){
digitalWrite(trig,0);
delayMicroseconds(2);
digitalWrite(trig,1);
delayMicroseconds(10);
digitalWrite(trig,0);
duracion=pulseIn(echo,1); //83333
distancia=duracion/58;
if(distancia < 15){
puerta.write(180);
}
else{
puerta.write(90);
}
}
void SistemaDeIncendios(){
lecturaFlama = digitalRead(sensorflama);
if(lecturaFlama==0) {
Serial.println("Fuego!");
}
else{
}
}
void SistemaIluminacion(){
lecturaLuz = analogRead(sensorluz);//0-1023
//luminosidad = map(lecturaLuz,0,1023,0,100);//ldr suelto
luminosidad = map(lecturaLuz,0,1023,100,0);//ldr en modulo
if(luminosidad < 40){
digitalWrite(patio1, 1);
digitalWrite(patio2, 1);
digitalWrite(patio3, 1);
digitalWrite(patio4, 1);
}
else{
digitalWrite(patio1, 0);
digitalWrite(patio2, 0);
digitalWrite(patio3, 0);
digitalWrite(patio4, 0);
}
}
void leerdato(){
if(Serial.available()>0){
dato = Serial.read();//lee de la serie la informacion que llega
}
if(dato == 'D'){
digitalWrite(dormitorio,1);
}
else if (dato == 'd'){
digitalWrite(dormitorio,0);
}
else if (dato == 'S'){
digitalWrite(sala,1);
}
else if (dato == 's'){
digitalWrite(sala,0);
}
else if (dato == 'C'){
digitalWrite(cocina,1);
}
else if (dato == 'c'){
digitalWrite(cocina,0);
}
else if (dato == 'P'){
digitalWrite(principal,1);
}
else if (dato == 'p'){
digitalWrite(principal,0);
}
else if (dato == 'Q'){
puerta2.write(180);
}
else if (dato == 'q'){
puerta2.write(90);
}
}