Возможно ли график таймера сделать компактнее?
- Войдите на сайт для отправки комментариев
Ср, 22/02/2017 - 19:29
Приветствую Всех! Написал таймер для управления реле:
//Цепляем библиотеки #include <DS3231.h> #include <Wire.h> #include <RTC.h> #include <Time.h> #include <TimeLib.h> //Готово int Rele = 7; //номер пина для реле DS3231 Clock; //подключаем часики bool h12; //24часовой формат bool PM; //тоже к часикам и формату void setup() { //запускаемся Serial.begin(9600); //устанавливаем скорость передачи данных Wire.begin(); digitalWrite(Rele, HIGH); //устанавливаем значение на реле - "выключено" pinMode(Rele, OUTPUT); //устанавливаем на реле "высокий" уровень } void loop() { //рабочий режим/алгоритмы Clock.setClockMode(false); int day, hour, minute, second; //объявляем переменные day = Clock.getDoW(); //получаем день недели hour = Clock.getHour(h12, PM); //присваиваем часы minute = Clock.getMinute(); //присваиваем минуты second = Clock.getSecond(); //присваиваем секунды if ( day == 1||2||3||4||5 && hour == 8 && minute == 30 && second == 00 ) { digitalWrite(Rele, LOW); delay(5000); digitalWrite(Rele, HIGH); } if ( day == 1||2||3||4||5 && hour == 9 && minute == 15 && second == 00 ) { digitalWrite(Rele, LOW); delay(5000); digitalWrite(Rele, HIGH); } if ( day == 1||2||3||4||5 && hour == 9 && minute == 25 && second == 00 ) { digitalWrite(Rele, LOW); delay(5000); digitalWrite(Rele, HIGH); } if ( day == 1||2||3||4||5 && hour == 10 && minute == 10 && second == 00 ) { digitalWrite(Rele, LOW); delay(5000); digitalWrite(Rele, HIGH); } if ( day == 1||2||3||4||5 && hour == 10 && minute == 25 && second == 00 ) { digitalWrite(Rele, LOW); delay(5000); digitalWrite(Rele, HIGH); } if ( day == 1||2||3||4||5 && hour == 11 && minute == 10 && second == 00 ) { digitalWrite(Rele, LOW); delay(5000); digitalWrite(Rele, HIGH); } if ( day == 1||2||3||4||5 && hour == 12 && minute == 15 && second == 00 ) { digitalWrite(Rele, LOW); delay(5000); digitalWrite(Rele, HIGH); } if ( day == 1||2||3||4||5 && hour == 12 && minute == 30 && second == 00 ) { digitalWrite(Rele, LOW); delay(5000); digitalWrite(Rele, HIGH); } if ( day == 1||2||3||4||5 && hour == 13 && minute == 15 && second == 00 ) { digitalWrite(Rele, LOW); delay(5000); digitalWrite(Rele, HIGH); } if ( day == 1||2||3||4||5 && hour == 13 && minute == 25 && second == 00 ) { digitalWrite(Rele, LOW); delay(5000); digitalWrite(Rele, HIGH); } if ( day == 1||2||3||4||5 && hour == 14 && minute == 10 && second == 00 ) { digitalWrite(Rele, LOW); delay(5000); digitalWrite(Rele, HIGH); } if ( day == 1||2||3||4||5 && hour == 14 && minute == 20 && second == 00 ) { digitalWrite(Rele, LOW); delay(5000); digitalWrite(Rele, HIGH); } if ( day == 1||2||3||4||5 && hour == 15 && minute == 05 && second == 00 ) { digitalWrite(Rele, LOW); delay(5000); digitalWrite(Rele, HIGH); } if ( day == 1||2||3||4||5 && hour == 15 && minute == 25 && second == 00 ) { digitalWrite(Rele, LOW); delay(5000); digitalWrite(Rele, HIGH); } if ( day == 1||2||3||4||5 && hour == 16 && minute == 10 && second == 00 ) { digitalWrite(Rele, LOW); delay(5000); digitalWrite(Rele, HIGH); } if ( day == 1||2||3||4||5 && hour == 16 && minute == 30 && second == 00 ) { digitalWrite(Rele, LOW); delay(5000); digitalWrite(Rele, HIGH); } if ( day == 1||2||3||4||5 && hour == 17 && minute == 15 && second == 00 ) { digitalWrite(Rele, LOW); delay(5000); digitalWrite(Rele, HIGH); } if ( day == 1||2||3||4||5 && hour == 17 && minute == 25 && second == 00 ) { digitalWrite(Rele, LOW); delay(5000); digitalWrite(Rele, HIGH); } if ( day == 1||2||3||4||5 && hour == 18 && minute == 10 && second == 00 ) { digitalWrite(Rele, LOW); delay(5000); digitalWrite(Rele, HIGH); } if ( day == 1||2||3||4||5 && hour == 18 && minute == 20 && second == 00 ) { digitalWrite(Rele, LOW); delay(5000); digitalWrite(Rele, HIGH); } if ( day == 1||2||3||4||5 && hour == 19 && minute == 05 && second == 00 ) { digitalWrite(Rele, LOW); delay(5000); digitalWrite(Rele, HIGH); }
График получается слишком громоздким и мне кажется, что ардуинке будет тяжело его переваривать. (хотя памяти он не особо много занимает) Можно ли как-то сделать расписание компактнее? Буду очень благодарен советам!
О как! А мы так не не могём!
Я понимаю, что за такое выпороть нужно) Я только учусь
Одинаковый повторяющийся код выведи в отдельную функцию. А весь график засунь в массив структур и в цикле его обрабатывай.
Как вариант.
Что делает:
Смотрит что день не от 1 до 5 или не нулевая секунда, выходит. Иначе работает дальше.
Делает лог. переменную false, которая станет true если время любое из условий.
Если всё ещё false значит ни одно из условий не сработало, выходит. Иначе do the shit.
Как вариант.
Что делает:
Смотрит что день не от 1 до 5 или не нулевая секунда, выходит. Иначе работает дальше.
Делает лог. переменную false, которая станет true если время любое из условий.
Если всё ещё false значит ни одно из условий не сработало, выходит. Иначе do the shit.
JasKo, благодарю за идею) Voodoo Doll, блин, спасибо большое, что примером показали! Попозже или утром попробую. Voodoo Doll, у Вас есть Киви/Вебмани?) Поблагодарю, чем смогу:3
Поставил Ваш код, при проверке вылетает ошибка (это кусок, других ошибок там нет):
В гугле не нашел нормальных ответов
Видимо, придётся так:
если надо то ЯД 410011919696337.
http://arduino.ru/Reference/FunctionDeclaration