Mayo 2017
#include <Wire.h>
#include "RTClib.h"
#define RELAY_ON 0
#define RELAY_OFF 1
#define RELAY_1 9
const int outputPin = 9; // conectar activador de Relay
bool state = false;
// RTC_DS1307 rtc;
RTC_DS3231 rtc;
void setup() {
Serial.begin(9600);
delay(1000);
// Set pin as output.
pinMode(RELAY_1, OUTPUT);
// Initialize relay one as off so that on reset it would be off by default
digitalWrite(RELAY_1, RELAY_OFF);
//pinMode(9, OUTPUT);
if (!rtc.begin()) {
Serial.println(F("Couldn't find RTC"));
while (1);
}
if (rtc.lostPower()) {
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
}
// Comprobar si esta programado el encendido
bool isScheduledON(DateTime date)
{
int weekDay = date.dayOfTheWeek();
float hours = date.hour() + date.minute() / 60.0;
// De 09:30 a 11:30 y de 21:00 a 23:00
bool hourCondition = (hours > 6.30 && hours < 15.50) || (hours > 16.00 && hours < 6.00);
// Miercoles, Sabado o Domingo
bool dayCondition = (weekDay == 1 || weekDay == 2 || weekDay == 3|| weekDay == 4|| weekDay == 5|| weekDay == 6);
if (hourCondition && dayCondition)
{
return true;
}
return false;
}
void loop() {
DateTime now = rtc.now();
if (state == false && isScheduledON(now)) // Apagado y debería estar encendido
{
digitalWrite(RELAY_1, LOW);
state = true;
// Serial.print("Activado");
}
else if (state == true && !isScheduledON(now)) // Encendido y deberia estar apagado
{
digitalWrite(RELAY_1, HIGH);
state = false;
//Serial.print("apaga Relay");
}
// delay(3000);
}



