#include "RTClib.h"// Libreria - reloj
#include <DHT.h> // Libreria - Temperatura
#include <Wire.h> // Libreria - Sensor de Luz
// Reloj
RTC_DS1307 RTC;
// Temperatura
int SensorHum = 9;
int fan = 10;
int temp, humedad;
DHT dht (SensorHum, DHT11);
//Higrometro
int higrometro = A1;
int bomba = 11;
// Sensor de luz (LDR)
long A = 1000; //Resistencia en oscuridad en KΩ
int B = 15; //Resistencia a la luz (10 Lux) en KΩ
int Rc = 10; //Resistencia calibracion en KΩ
int LDRPin = A0; //Pin del LDR
int LuzPin = 12;
int V;
int ilum;
void setup(){
Serial.begin(1000);
// Activa reloj
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
// Activa temperatura
dht.begin();
//Activa Higrometro
pinMode(higrometro, INPUT);
pinMode(bomba, OUTPUT);
}
void temperatura (){
// Temperatura
humedad = dht.readHumidity();
temp = dht.readTemperature();
Serial.print(temp);
Serial.print(",");
Serial.print(humedad);
Serial.print(",");
if(temp>35)
{
digitalWrite(fan, HIGH);
Serial.print("Fan = ON");
Serial.print(",");
}
else
{
digitalWrite(fan, LOW);
Serial.print("Fan = OFF");
Serial.print(",");
}
}
void sn () {
//Sensor de nivel
int nivel = analogRead(sn);
If(nivel==HIGH)
{
digitalWrite(bomba, LOW);
}
else
{
void higro () {
//Higrometro
int humedad = analogRead(higrometro);
int hr = map(humedad, 0, 1023, 100, 0);
Serial.print(hr);
Serial.print(",");
if(hr<60)
{
digitalWrite(bomba, HIGH);
Serial.print("Bomba = ON");
Serial.print(",");
}
else
{
digitalWrite(bomba, LOW);
Serial.print("Bomba = OFF");
Serial.print(",");
}
}
}
void luz (){
V = analogRead(LDRPin);
//ilum = ((long)(1024-V)A10)/((long)BRcV); //usar si LDR entre GND y A0
ilum = ((long)VA10)/((long)BRc(1024-V)); //usar si LDR entre A0 y Vcc (como en
el esquema anterior)
Serial.print(ilum);
Serial.print(",");
if (ilum < 15) {
digitalWrite(LuzPin, HIGH);
Serial.println("Luces = ON");
}
else {
digitalWrite(LuzPin, LOW);
Serial.println("Luces = OFF");
}
delay(3000);
}
void loop(){
// RELOJ - Obtención de datos
DateTime now = RTC.now()
Serial.print("Dia de la semana: ");
Serial.println(now.dayOfWeek(), DEC);// L(1), M(2), X(3), J(4), V(5), S(6), D(7)
if (now.dayOfWeek() == 1) Serial.println("Lunes"); // La variable now.dayOfWeek (dia de
la semana) tedra valor de 1 para dia lunes y 7 para domingo.
if (now.dayOfWeek() == 2) Serial.println("Martes");
if (now.dayOfWeek() == 3) Serial.println("Miércoles");
if (now.dayOfWeek() == 4) Serial.println("Juevess");
if (now.dayOfWeek() == 5) Serial.println("Viernes");
if (now.dayOfWeek() == 6) Serial.println("Sábado");
if (now.dayOfWeek() == 7) Serial.println("Domingo");
Serial.println(); // Línea aparte
// Se publicaran datos de fecha, en numeros
Serial.print("Fecha:");
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("Hora:"); // Hora en formato 0-23.
Serial.print(now.hour(), DEC); // Horas
Serial.print(':');
Serial.print(now.minute(), DEC); // Minutos
Serial.print(':');
Serial.print(now.second(), DEC); // Segundos
Serial.println();
if ((now.hour() >= 7) && (now.hour() <= 20)){
temperatura();
}
if ((now.hour() >= 7) && (now.hour() <= 20)){
higro();
}
if ((now.hour() >= 7) && (now.hour() <= 20)){
luz();
delay (3000);
}
}