85 lines
1.9 KiB
C++
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);
|
|
}
|
|
|