// Incluimos librería
#include <DHT.h>
// Definimos el pin digital donde se conecta el sensor
#define DHTPIN 2
// Dependiendo del tipo de sensor
#define DHTTYPE DHT11
// Inicializamos el sensor DHT11
DHT dht(DHTPIN, DHTTYPE);
#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 RTC;
#define L1 26
int HG = 19;
int MG = 18;
const int PIRpin = 4;
int pirState = LOW;
int val = 0;
int buzzer = 18;
void setup() {
// Inicializamos comunicación serie
Serial.begin(9600);
pinMode(14,OUTPUT); //Modo del pin D14
pinMode(12,OUTPUT); //Modo del pin D12
pinMode(13,OUTPUT); //Modo del pin D13
// Comenzamos el sensor DHT
dht.begin();
Wire.begin(); // Inicia el puerto I2C
RTC.begin(); // Inicia la comunicación con el RTC
//RTC.adjust(DateTime(__DATE__, __TIME__)); // Establece la fecha y hora (Comentar una vez establecida la hora)
Serial.begin(9600); // Establece la velocidad de datos del puerto serie
pinMode(L1, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(PIRpin, INPUT);
Serial.begin(9600);
}
void loop() {
// Esperamos 5 segundos entre medidas
delay(1000);
// Leemos la humedad relativa
float h = dht.readHumidity();
// Leemos la temperatura en grados centígrados (por defecto)
float t = dht.readTemperature();
// Leemos la temperatura en grados Fahreheit
float f = dht.readTemperature(true);
// Comprobamos si ha habido algún error en la lectura
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println("Error obteniendo los datos del sensor DHT11");
return;
}
// Calcular el índice de calor en Fahreheit
float hif = dht.computeHeatIndex(f, h);
// Calcular el índice de calor en grados centígrados
float hic = dht.computeHeatIndex(t, h, false);
Serial.print("Humedad: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperatura: ");
Serial.print(t);
Serial.print(" *C ");
Serial.print(f);
Serial.print(" *F\t");
Serial.print("Índice de calor: ");
Serial.print(hic);
Serial.print(" *C ");
Serial.print(hif);
Serial.println(" *F");
if(t==1){
digitalWrite(14,HIGH);
}else{
digitalWrite(14,LOW);
}
if(t==2){
digitalWrite(12,HIGH);
}else{
digitalWrite(12,LOW);
}
if(t==3){
digitalWrite(13,HIGH);
}else{
digitalWrite(13,LOW);
}
DateTime now = RTC.now(); // Obtiene la fecha y hora del RTC
Serial.print(now.year(), DEC); // Año
Serial.print('/');
Serial.print(now.month(), DEC); // Mes
Serial.print('/');
Serial.print(now.day(), DEC); //
Serial.print(' ');
Serial.print(now.hour(), DEC); // Horas
Serial.print(':');
Serial.print(now.minute(), DEC); // Minutos
Serial.print(':');
Serial.print(now.second(), DEC); // Segundos
Serial.println(); delay(1000); // La información se actualiza cada 1 seg.
Serial.println(HG);
Serial.println(MG);
if(HG == now.hour() && MG == now.minute()){
digitalWrite(L1, HIGH);
Serial.println("LED activado");
}else{
digitalWrite(L1, LOW);
Serial.println("LED desactivado");
}
val = digitalRead(PIRpin);
if(val == HIGH){
digitalWrite(buzzer, HIGH);
if(pirState == LOW){
Serial.println("Sensor Activado");
pirState = HIGH;
}
}else{
digitalWrite(buzzer, LOW);
if(pirState == HIGH){
Serial.println("Sensor Desactivado");
pirState = LOW;
}
}
Serial.println(PIRpin);
int value= digitalRead(PIRpin);
if (value == HIGH)
{
digitalWrite(buzzer, HIGH);
delay(50);
digitalWrite(buzzer, LOW);
delay(50);
}else{
digitalWrite(buzzer, LOW);
}
}