#include <RTClib.h>
DateTime now;
RTC_DS1307 rtc;
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
int relay = 2; // выход на реле
#define switchPin 3 // вход с тумблера
uint8_t switchPinState;
enum switchProg : uint8_t {
PROG_ONE = 0, // Если переключатель в положении GND
PROG_TWO = 1 // Если переключатель в положении VCC
};
void setup()
{
Serial.begin(9600);
pinMode(relay, OUTPUT); // выход на реле
pinMode(4, OUTPUT); // выход на первый светодиод
pinMode(5, OUTPUT); // выход на второй светодиод
pinMode(switchPin, INPUT); // вход с переключателя (HIGH / LOW)
digitalWrite(relay, HIGH); // задаём сигнал на реле
digitalWrite(7, HIGH);
pinMode(7, OUTPUT);
if (rtc.begin()) {
Serial.println("Couldn't find RTC");
}
now = DateTime(2000, 1, 1, 8, 0, 0); //тестовое стартовое время, 8 часов 0 мин
}
void loop()
{
delay(1000);
now = now + TimeSpan(0, 0, 5, 0); //толкаем время на 5 минут (каждую секунду)
Serial.println( String(now.hour()) + ":" + String(now.minute()) + ":" + String(now.second()) ) ;
//if (now.minute() == 40 && now.second() < 07 ) {
// digitalWrite (12, LOW);
//}
switchPinState = digitalRead(switchPin);
switch (switchPinState) {
case switchProg::PROG_ONE:
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
if (now.hour() == 8 && now.minute() == 30 ) { // первый
if (now.second() < 07) {
digitalWrite (relay, LOW);
}
else {
digitalWrite (relay, HIGH);
}
}
else if (now.hour() == 9 && now.minute() == 15 ) { // второй
if (now.second() < 07) {
digitalWrite (relay, LOW);
}
else {
digitalWrite (relay, HIGH);
}
}
else if (now.hour() == 9 && now.minute() == 25 ) { // третий
if (now.second() < 07) {
digitalWrite (relay, LOW);
}
else {
digitalWrite (relay, HIGH);
}
}
else if (now.hour() == 10 && now.minute() == 10 ) { // четвёртый
if (now.second() < 07) {
digitalWrite (relay, LOW);
}
else {
digitalWrite (relay, HIGH);
}
}
else if (now.hour() == 10 && now.minute() == 30 ) { // пятый
if (now.second() < 07) {
digitalWrite (relay, LOW);
}
else {
digitalWrite (relay, HIGH);
}
}
else if (now.hour() == 11 && now.minute() == 15 ) { // шестой
if (now.second() < 07) {
digitalWrite (relay, LOW);
}
else {
digitalWrite (relay, HIGH);
}
}
else if (now.hour() == 11 && now.minute() == 35 ) { // седьмой
if (now.second() < 07) {
digitalWrite (relay, LOW);
}
else {
digitalWrite (relay, HIGH);
}
}
else if (now.hour() == 12 && now.minute() == 20 ) { // восьмой
if (now.second() < 07) {
digitalWrite (relay, LOW);
}
else {
digitalWrite (relay, HIGH);
}
}
else if (now.hour() == 12 && now.minute() == 30 ) { // девятый
if (now.second() < 07) {
digitalWrite (relay, LOW);
}
else {
digitalWrite (relay, HIGH);
}
}
else if (now.hour() == 13 && now.minute() == 15 ) { // десятый
if (now.second() < 07) {
digitalWrite (relay, LOW);
}
else {
digitalWrite (relay, HIGH);
}
}
else if (now.hour() == 13 && now.minute() == 25 ) { // одиннадцатый
if (now.second() < 07) {
digitalWrite (relay, LOW);
}
else {
digitalWrite (relay, HIGH);
}
}
else if (now.hour() == 14 && now.minute() == 10 ) { // двинадцатый
if (now.second() < 07) {
digitalWrite (relay, LOW);
}
else {
digitalWrite (relay, HIGH);
}
}
else if (now.hour() == 14 && now.minute() == 20 ) { // тринадцатый
if (now.second() < 07) {
digitalWrite (relay, LOW);
}
else {
digitalWrite (relay, HIGH);
}
}
else if (now.hour() == 15 && now.minute() == 05 ) { // четырнадцатый
if (now.second() < 07) {
digitalWrite (relay, LOW);
}
else {
digitalWrite (relay, HIGH);
}
}
else if (now.hour() == 15 && now.minute() == 10 ) { // пятнадцатый
if (now.second() < 07) {
digitalWrite (relay, LOW);
}
else {
digitalWrite (relay, HIGH);
}
}
else if (now.hour() == 15 && now.minute() == 50 ) { // шестнадцатый
if (now.second() < 07) {
digitalWrite (relay, LOW);
}
else {
digitalWrite (relay, HIGH);
}
}
break;
case switchProg::PROG_TWO:
digitalWrite(5, HIGH);
digitalWrite(4, LOW);
if (now.hour() == 8 && now.minute() == 30 ) { // первый
if (now.second() < 07) {
digitalWrite (relay, LOW);
}
else {
digitalWrite (relay, HIGH);
}
}
else if (now.hour() == 9 && now.minute() == 05 ) { // второй
if (now.second() < 07) {
digitalWrite (relay, LOW);
}
else {
digitalWrite (relay, HIGH);
}
}
else if (now.hour() == 9 && now.minute() == 10 ) { // третий
if (now.second() < 07) {
digitalWrite (relay, LOW);
}
else {
digitalWrite (relay, HIGH);
}
}
else if (now.hour() == 9 && now.minute() == 45 ) { // четвёртый
if (now.second() < 07) {
digitalWrite (relay, LOW);
}
else {
digitalWrite (relay, HIGH);
}
}
else if (now.hour() == 10 && now.minute() == 00 ) { // пятый
if (now.second() < 07) {
digitalWrite (relay, LOW);
}
else {
digitalWrite (relay, HIGH);
}
}
else if (now.hour() == 10 && now.minute() == 35 ) { // шестой
if (now.second() < 07) {
digitalWrite (relay, LOW);
}
else {
digitalWrite (relay, HIGH);
}
}
else if (now.hour() == 10 && now.minute() == 50 ) { // седьмой
if (now.second() < 07) {
digitalWrite (relay, LOW);
}
else {
digitalWrite (relay, HIGH);
}
}
else if (now.hour() == 11 && now.minute() == 25 ) { // восьмой
if (now.second() < 07) {
digitalWrite (relay, LOW);
}
else {
digitalWrite (relay, HIGH);
}
}
else if (now.hour() == 11 && now.minute() == 30 ) { // девятый
if (now.second() < 07) {
digitalWrite (relay, LOW);
}
else {
digitalWrite (relay, HIGH);
}
}
else if (now.hour() == 12 && now.minute() == 05 ) { // десятый
if (now.second() < 07) {
digitalWrite (relay, LOW);
}
else {
digitalWrite (relay, HIGH);
}
}
else if (now.hour() == 12 && now.minute() == 10 ) { // одиннадцатый
if (now.second() < 07) {
digitalWrite (relay, LOW);
}
else {
digitalWrite (relay, HIGH);
}
}
else if (now.hour() == 12 && now.minute() == 45 ) { // двинадцатый
if (now.second() < 07) {
digitalWrite (relay, LOW);
}
else {
digitalWrite (relay, HIGH);
}
}
else if (now.hour() == 12 && now.minute() == 50 ) { // тринадцатый
if (now.second() < 07) {
digitalWrite (relay, LOW);
}
else {
digitalWrite (relay, HIGH);
}
}
else if (now.hour() == 13 && now.minute() == 25 ) { // четырнадцатый
if (now.second() < 07) {
digitalWrite (relay, LOW);
}
else {
digitalWrite (relay, HIGH);
}
}
break;
}
}