twobuttonstimer/twobuttonstimer.ino

85 lines
1.9 KiB
C++

/*
* based on:
* TimeRTC.pde
* example code illustrating Time library with Real Time Clock.
*
*/
#include <TimeLib.h>
#include <Wire.h>
#include <DS1307RTC.h> // a basic DS1307 library that returns time as a time_t
int led = 13;
int indicator = 0;
void setup() {
pinMode(8, OUTPUT);
pinMode(9, 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 indicate that time is not set or RTC is not plugged
int i;
for (i = 1; i <= 50; i++)
{
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(50); // wait for a second
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(50); // wait for a second
}
}
delay(1000);
}
void checkTime(){
if ((hour()==6 || hour()==7 ) && (indicator==0)) {
pressSTART();
}
if ((hour()==8) && (minute()==1)) {
pressSTOP();
}
if ((hour()==12 || hour()==13 ) && (indicator==0)) {
pressSTART();
}
if ((hour()==14) && (minute()==1)) {
pressSTOP();
}
if ((hour()==17) && (indicator==0)) {
pressSTART();
}
if ((hour()==18) && (minute()==25)) {
pressSTOP();
}
}
void pressSTOP(){
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
indicator = 0;
digitalWrite(8, HIGH);
delay(500);
digitalWrite(8, LOW);
delay(61000);
}
void pressSTART(){
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
indicator = 1;
digitalWrite(9, HIGH);
delay(500);
digitalWrite(9, LOW);
delay(61000);
}