sábado, 20 de mayo de 2017

Relay in Aduino uno & DS3132 timer

Mayo 2017
Aduino uno Relay & DS3132 timer





#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);
}