/* 2 relay-buttons on timer scetch * [WINTER short time version] * based on TimeRTC.pde * Use SetTime scetch (from DS1307RTC library) for time-sync */ #include #include #include // a basic DS1307 library that returns time as a time_t int stopButton = 8; int startButton = 9; int led = 13; int indicator = 0; void setup() { pinMode(stopButton, OUTPUT); pinMode(startButton, OUTPUT); pinMode(led, OUTPUT); Serial.begin(9600); while (!Serial); // wait until Arduino Serial Monitor opens setSyncProvider(RTC.get); // the function to get the time from the RTC if(timeStatus()!= timeSet) Serial.println("Unable to sync with the RTC"); else Serial.println("RTC has set the system time"); } void loop() { if (timeStatus() == timeSet) { checkTime(); } else { // fast blinking after boot indicates that time is not set or DS1307RTC is not plugged int i; for (i = 1; i <= 100; i++) { digitalWrite(led, LOW); delay(50); digitalWrite(led, HIGH); delay(50); } } delay(5000); } // Winter timing 6:00-8:01, 12:00-13:01, 17:00-18:01 void checkTime() { // 6:00 - 8:01 - working if ((hour()==6) && (indicator==0)) pressStart(); if ((hour()==7) && (indicator==0)) pressStart(); // 8:01 - stop if ((hour()==8) && (minute()==1)) pressStop(); // 12:00 - 13:01 - working if ((hour()==12) && (indicator==0)) pressStart(); // 13:01 - stop if ((hour()==13) && (minute()==1)) pressStop(); // 17:00 - 18:01 - working if ((hour()==17) && (indicator==0)) pressStart(); // 18:01 - stop if ((hour()==18) && (minute()==1)) pressStop(); } void pressStart() { delay(5000); digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) indicator = 1; digitalWrite(startButton, HIGH); delay(889); digitalWrite(startButton, LOW); delay(61000); // wait a minute } void pressStop() { delay(5000); digitalWrite(led, LOW); // turn the LED off by making the voltage LOW indicator = 0; digitalWrite(stopButton, HIGH); delay(887); digitalWrite(stopButton, LOW); delay(61000); // wait a minute }