Управление реле по таймеру
- Войдите на сайт для отправки комментариев
Пнд, 18/12/2017 - 16:00
Доброго времени суток!
Задача:
Пользователь нажимает на дисплее Nextion кнопку старт, затем вклечаются реле на 25 минут и после истечения 25ти минут отключается.
Вопрос: как сделать, так чтобы реле работало по таймеру 25 мин. а затем отключалось.
PS: за реальные предложения в решении задачи отменя бонус...
ЗАРАНЕЕ СПАСИБО!!!!!
Если вы не ошиблись разделом форума, то все зависит от степени вашей "продвинутости". Можно через delay(), как многие новички делают, а можно кошерно с помощью millis().
Примерно так:
void pisec() { static unsigned long oldTime = 0; if (rele == включено) { if (millis() - oldTime >= 1500000) { oldTime = millis(); //тута выключить } } else { oldTime = millis(); } }гони бонус.
С delay:
void startButtonPressedOnNextion() { digitalWrite(RELAY_PIN, RELAY_ON_LEVEL); delay(25*60*1000); digitalWrite(RELAY_PIN, RELAY_OF_LEVEL); }Без delay:
bool isRelayOn = false; unsigned long relayTimer; void startButtonPressedOnNextion() { if(isRelayOn) return; relayTimer = millis(); digitalWrite(RELAY_PIN, RELAY_ON_LEVEL); isRelayOn = true; } void updateRelay() { if(!isRelayOn) return; if(millis() - relayTimer > 25*60*1000) { isRelayOn = false; digitalWrite(RELAY_PIN, RELAY_OFF_LEVEL); } }Только не говорите, что не компилируется и непонятно, что к чему - за вас никто ВСЮ работу делать не будет. Пути - показаны, дерзайте.
Оххх. Здесь он точно сам не исправит :(
"""""""""""""Только не говорите, что не компилируется и непонятно, что к чему - за вас никто ВСЮ работу делать не будет. Пути - показаны, дерзайте."""""""""""
Конечно верное замечание, не спорю!!!!!!!!!!!!!!!!!!
Но я только учусь и пытаюсь разобраться, в надежде что гуру вроди Вас проведут по темному и дремучему лесу под названием АРДУИНО!)))))
ЕСЛИ БЫ ВСЕ БЫЛИ ТАКИМИ ОТКРЫТЫМИ и ДОБРОЖЕЛАТЕЛЬНЫМИ КАК ВЫ.
А ТЕПЕРЬ МОЖНО ВАС ПОПРОСИТЬ ПРОКОМЕНИТИРОВАТЬ ВАШ "МУНУСКРИПТ" С ЗАКЛИНАНИЯМИ ПЛИЗ!!!!
И ПРО БОНУС Я НЕЗАБЫЛ!!!!!!!!!!!!!!
Оххх. Здесь он точно сам не исправит :(
РАЗЬЯСИНИТЕ КА СУДОРЬ МЫСЛЬ СВОЮ ХОЛОПУ)))
А ТЕПЕРЬ МОЖНО ВАС ПОПРОСИТЬ ПРОКОМЕНИТИРОВАТЬ ВАШ "МУНУСКРИПТ" С ЗАКЛИНАНИЯМИ ПЛИЗ!!!!
Во-первых - не кричите. Во-вторых - всё просто, смотрите (для второго примера беру) - у нас есть функция startButtonPressedOnNextion - она должна вызываться тогда, когда на Nextion нажата кнопка. Далее - у нас есть флаг, что реле включено, и время начала его работы. В этой функции, если нажата кнопка - мы включаем реле, если оно ещё не включено.
Далее - функцию updateRelay надо постоянно вызывать в loop. Она проверяет - если реле включено, то проверяется разница между временем начала работы и текущим. Если эта разница чуть больше (на самую кроху вроде одной миллисекунды) чем 25 минут - то реле выключается.
Всё.
Это было сказано DIYMan, он понял.
Я конечто рад, что позобавил Вас своей тупостью но ща вообще ЗАПУТАЛСЯ.
"Э да я не кричал".)))
ПОДСКАЖИТЕ КУДА ЗДЕСЬ ВСТАВИТЬ КОД С ТАЙМЕРОМ
Весело тут! У Nextion есть свой таймер и если это расширенная версия, то Дуню можно выкинуть. Если базовая, то Дуне остаётся только принять команды на включение и отключение реле, Nextion сам всё посчитает.
ПОДСКАЖИТЕ КУДА ЗДЕСЬ ВСТАВИТЬ КОД С ТАЙМЕРОМ
После строки №ХЗ
Весело тут! У Nextion есть свой таймер и если это расширенная версия, то Дуню можно выкинуть. Если базовая, то Дуне остаётся только принять команды на включение и отключение реле, Nextion сам всё посчитает.
Вы правы-версия nextion расширенная!
но я не знаю как там работать с часами(((
есть мануал или ролик по этой теме?
Тогда Дуню можно выкинуть, там 8 gpio и rtc. Небольшой пример, уже не только Вы на часах спотыкаетесь, хотя ничего сложного. https://yadi.sk/d/4UeN4Nlg3QmkVu
Когда время равно требуемому, замкнуть. А дальше интервал сам, без часов, считается.
От сердцем чую, замылить бонус хочет.
Сердце вас подводит, сделать кардиограмму не мешало бы (эт я вам как бывший фельдшер говорю)
Та ладно, прозектор сделает. Но согласитесь, обещанного бонуса за проделанную работу так и не было, а сейчас развиваем уже другую тему.((((
Бонус БУДЕТ!!!!!!!!!!
ВОПРОС ВСЕ ТОТЖЕ!!!!!!!!!!!!!!!!!
Задача:Пользователь нажимает на дисплее Nextion кнопку старт, затем вклечаются реле на 25 минут и после истечения 25ти минут отключается.
Вопрос: как сделать, так чтобы реле работало по таймеру 25 мин. а затем отключалось.
PS: за реальные предложения в решении задачи отменя бонус... (QIWI)
В моём примере таймер срабатывает каждую секунду, отюда и "пляшите". Тут вариантов куча. Сделайте ещё один таймер - минутный или в этом засекайте время нажатия и считайте сколько нужно.
ВОПРОС ВСЕ ТОТЖЕ!!!!!!!!!!!!!!!!!
и получили ответ в #3 и разъяснения по нему в #7. Думаю, что большего вам вряд ли стоит ждать.
отменя бонус...
Тут явно опечатка, т.к. такого слова нет. Как должно быть правильно? "отменяю"? "отмена"? Или "отменяется"?
- нажав на кнопку "СТАРТ" срабатывают РЕЛЕ 1,3,5 (Время работы 25мин, отображаются в прогресс баре)
- нажав на кнопку "СТОП" срабатывают РЕЛЕ 2 (Время работы не ограничено)
- нажав на кнопку "КВАРЦ" срабатывают РЕЛЕ 4 (Время работы 15мин, отображаются в прогресс баре)
ПРОБОНУС....
КТО СКИНЕТ ПРОЕКТ КИДАЙТЕ QIWI, ПОМОЖЕТ ваш проект с меня бабосик (не много))))))))))!!!
И если нажать на кружочек реле сработает так сказать ручное управление
отменя бонус...
Тут явно опечатка, т.к. такого слова нет. Как должно быть правильно? "отменяю"? "отмена"? Или "отменяется"?
ОСТРЯК!!!!!)))))))))
Я же тупенький, что я сделаю... ну немогу я Вас ПРОФЕССОРОВ ПОНЯТЬ ПОМОГИТЕ доступнее, как для чайников
- нажав на кнопку "СТАРТ" срабатывают РЕЛЕ 1,3,5 (Время работы 25мин, отображаются в прогресс баре)
- нажав на кнопку "СТОП" срабатывают РЕЛЕ 2 (Время работы не ограничено)
- нажав на кнопку "КВАРЦ" срабатывают РЕЛЕ 4 (Время работы 15мин, отображаются в прогресс баре)
ПРОБОНУС....
КТО СКИНЕТ ПРОЕКТ КИДАЙТЕ QIWI, ПОМОЖЕТ ваш проект с меня бабосик (не много))))))))))!!
Пробелы в логике: для кнопок "СТАРТ" и "КВАРЦ" нужны ДВА ОТДЕЛЬНЫХ прогресс-бара. И если есть кнопки "старт" и "стоп", то по логике вторая должна отменять действия первой, а не включать свое реле...
Ну и понятие "немного" было бы неплохо озвучить :) А то может вы за пару сотен рублей надеетесь решение получить...
ИМХО, дешевле двадцатки (тысяч) я бы не взялся, уж больно стремное задание :)
ну про сотни вы конечно перегнули)))) про логику согласен! ну 5000 больше нет((( а про стремное задание не понял ВАС в чем стремность?????
прогресс бар работает то с одним то с другим компонентом, как то так
а про стремное задание не понял ВАС в чем стремность?????
в заказчике :)
ЗЫ расслабтесь, про 20тыс я пошутил, я не торгуюсь, все равно делать не буду :)
прогресс бар работает то с одним то с другим компонентом, как то так
а если кнопка кварц будет нажата до окончания периода кнопки старт - что будет показывать прогресс-бар?
переход на личность это перебор, если не будите и не надо(((
Что то очень знакомое )))
переход на личность это перебор
Если Вы про фразу
в заказчике :)
То это не переход на личность. Это костатация факта, что если заказчик не может понятно сформулировать, что ему нужно, за работу браться нельзя. 100% без исключений, выяснится, что реально ему нужно "не это", а нужно ему работа гораздо больше, сложнее и дороже, чем изначально казалось, и он будет давить типа "взялся, делай, инче ославлю ...". Плавали, знаем.
СОГЛАСЕН!!!
есть такое. ну вроди б как я изложил все как надо!)))
#define RELAY 2 // пин ардуино, к которому подключено реле int interval = 20; // время работы таймера, мин unsigned long timer =0; // переменная для работы таймера bool timerenabled = 0; // флаг включен таймер или нет void setup() { pinMode (RELAY, OUTPUT); // пин ардуино, к которому подключено реле, делаем выходом digitalWrite(RELAY, HIGH ); // сначала реле в положении выкл, (сигнал инвертирован - чаще реле с такой логикой) } void loop() { if (тут вставить условие - если нажата кнопка на Nextion) { // строка мониторит факт нажатия кнопки на Nextion timer = millis(); // как бы сбрасываем таймер на ноль timerenabled = 1; // включаем таймер digitalWrite(RELAY, 0); // ну и включаем реле } if (timerenabled && millis()-timer> (unsigned long) interval*60000UL) //если таймер был включен и он кончился { timerenabled = 0 ; // выключаем таймер digitalWrite(RELAY, 1); //выключаем реле } }САМЫЙ КРУТОЙ СКЕТЧ, РАБОТАЮ НАД ЕГО АДАПТАЦИЕЙ ПОД СВОЙ ПРОЕКТ.
КАК ЗАКОНЧУ НАПИШУ ВАМ "MaksVV" !!!!!!!!!!!!!!!!!!!!!!!!!!!!
#define RELAY 2 // пин ардуино, к которому подключено реле int interval = 20; // время работы таймера, мин unsigned long timer =0; // переменная для работы таймера bool timerenabled = 0; // флаг включен таймер или нет void setup() { pinMode (RELAY, OUTPUT); // пин ардуино, к которому подключено реле, делаем выходом digitalWrite(RELAY, HIGH ); // сначала реле в положении выкл, (сигнал инвертирован - чаще реле с такой логикой) } void loop() { if (тут вставить условие - если нажата кнопка на Nextion) { // строка мониторит факт нажатия кнопки на Nextion timer = millis(); // как бы сбрасываем таймер на ноль timerenabled = 1; // включаем таймер digitalWrite(RELAY, 0); // ну и включаем реле } if (timerenabled && millis()-timer> (unsigned long) interval*60000UL) //если таймер был включен и он кончился { timerenabled = 0 ; // выключаем таймер digitalWrite(RELAY, 1); //выключаем реле } }Вот как я адаптировал Ваш код
#define RELAY8 8 // диспригатор 220 #define RELAY9 9 // ВЫХОД и вытяжка 12 и 220 #define RELAY10 10 // Конвекционные вентиляторы 12 #define RELAY11 11 // КВАРЦ 220 #define RELAY12 12 // ИОНИЗАТОР 220 #include <SoftwareSerial.h> #include <Nextion.h> SoftwareSerial nextion(2, 3);// Nextion TX to pin 2 and RX to pin 3 of Arduino Nextion myNextion(nextion, 9600); //create a Nextion object named myNextion using the nextion serial port @ 9600bps int interval = 25; // время работы таймера на реле 8, 10, 12, мин int interval2 = 15; // время работы таймера на реле 11, мин unsigned long timer =0; // переменная для работы таймера bool timerenabled = 0; // флаг включен таймер или нет void setup() { Serial.begin(9600); pinMode (RELAY8, OUTPUT); // пин ардуино, к которому подключено реле, делаем выходом digitalWrite(RELAY8, HIGH ); // сначала реле в положении выкл, (сигнал инвертирован - чаще реле с такой логикой) pinMode (RELAY9, OUTPUT); // пин ардуино, к которому подключено реле, делаем выходом digitalWrite(RELAY9, HIGH ); // сначала реле в положении выкл, (сигнал инвертирован - чаще реле с такой логикой) pinMode (RELAY10, OUTPUT); // пин ардуино, к которому подключено реле, делаем выходом digitalWrite(RELAY10, HIGH ); // сначала реле в положении выкл, (сигнал инвертирован - чаще реле с такой логикой) pinMode (RELAY11, OUTPUT); // пин ардуино, к которому подключено реле, делаем выходом digitalWrite(RELAY11, HIGH ); // сначала реле в положении выкл, (сигнал инвертирован - чаще реле с такой логикой) pinMode (RELAY12, OUTPUT); // пин ардуино, к которому подключено реле, делаем выходом digitalWrite(RELAY12, HIGH ); // сначала реле в положении выкл, (сигнал инвертирован - чаще реле с такой логикой) myNextion.init(); } void loop() { /////////////////////////////////////////////////////////////START////////////////////////////////////////////////////////////// String message = myNextion.listen(); //check for message if(message == "65 0 3 1 ffff ffff ffff") { timer = millis(); // как бы сбрасываем таймер на ноль timerenabled = 1; // включаем таймер digitalWrite(RELAY9, 1); //выключаем реле digitalWrite(RELAY11, 1); //выключаем реле digitalWrite(RELAY8, 0); // ну и включаем реле digitalWrite(RELAY10, 0); // ну и включаем реле digitalWrite(RELAY12, 0); // ну и включаем реле } if (timerenabled && millis()-timer> (unsigned long) interval*60000UL) //если таймер был включен и он кончился { timerenabled = 0 ; // выключаем таймер digitalWrite(RELAY8, 1); //выключаем реле digitalWrite(RELAY10, 1); //выключаем реле digitalWrite(RELAY11, 1); //выключаем реле digitalWrite(RELAY12, 1); //выключаем реле digitalWrite(RELAY9, 0); //включаем реле } //////////////////////////////////////////////////////////////END////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////QVARC////////////////////////////////////////////////////////////// if(message == "65 0 4 1 ffff ffff ffff") { timer = millis(); // как бы сбрасываем таймер на ноль timerenabled = 1; // включаем таймер digitalWrite(RELAY8, 1); //выключаем реле digitalWrite(RELAY9, 1); //выключаем реле digitalWrite(RELAY10, 1); //выключаем реле digitalWrite(RELAY12, 1); //выключаем реле digitalWrite(RELAY11, 0); // ну и включаем реле } if (timerenabled && millis()-timer> (unsigned long) interval2*60000UL) //если таймер был включен и он кончился { timerenabled = 0 ; // выключаем таймер digitalWrite(RELAY11, 1); //выключаем реле digitalWrite(RELAY9, 0); //включаем реле } //////////////////////////////////////////////////////////////END////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////STOP////////////////////////////////////////////////////////////// if(message == "65 0 5 1 ffff ffff ffff") { timer = millis(); // как бы сбрасываем таймер на ноль timerenabled = 0; // выключаем таймер digitalWrite(RELAY8, 1); // ну и выключаем реле digitalWrite(RELAY9, 0); // ну и выключаем реле digitalWrite(RELAY10, 1); // ну и выключаем реле digitalWrite(RELAY11, 1); // ну и выключаем реле digitalWrite(RELAY12, 1); // ну и выключаем реле } //////////////////////////////////////////////////////////////END////////////////////////////////////////////////////////////// //****************************РУЧНОЕ УПРАВЛЕНИЕ***************************************** if(message == "1") { digitalWrite (RELAY8, LOW); } if(message == "2") { digitalWrite (RELAY8, HIGH); } if(message == "3") { digitalWrite (RELAY9, LOW); } if(message == "4") { digitalWrite (RELAY9, HIGH); } if(message == "5") { digitalWrite (RELAY10, LOW); } if(message == "6") { digitalWrite (RELAY10, HIGH); } if(message == "7") { digitalWrite (RELAY11, LOW); } if(message == "8") { digitalWrite (RELAY11, HIGH); } if(message == "9") { digitalWrite (RELAY12, LOW); } if(message == "10") { digitalWrite (RELAY12, HIGH); } if(message != ""){ // if a message is received... Serial.println(message); //...print it out } }А ну ка быстро вставляйте свои адаптации как код,
а то заклюют!
http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukomment...
Сравните как у других
Включить нумерацию строк забыли?
т.е. для второго таймера используем переменные с другими названиями, например:
#define RELAY 2 // пин ардуино, к которому подключено реле int interval = 20; // время работы таймера, мин unsigned long timer =0; // переменная для работы таймера bool timerenabled = 0; // флаг включен таймер или нет void setup() { pinMode (RELAY, OUTPUT); // пин ардуино, к которому подключено реле, делаем выходом digitalWrite(RELAY, HIGH ); // сначала реле в положении выкл, (сигнал инвертирован - чаще реле с такой логикой) } void loop() { if (тут вставить условие - если нажата кнопка на Nextion) { // строка мониторит факт нажатия кнопки на Nextion timer = millis(); // как бы сбрасываем таймер на ноль timerenabled = 1; // включаем таймер digitalWrite(RELAY, 0); // ну и включаем реле } if (timerenabled && millis()-timer> (unsigned long) interval*60000UL) //если таймер был включен и он кончился { timerenabled = 0 ; // выключаем таймер digitalWrite(RELAY, 1); //выключаем реле } }MaksVV СПАСИБО ВАМ ЗА ТО ЧТО ПОМОГЛИ С ПЕРЕМЕННЫМИ!!!
Есть последний вопрос: как не пыталься понять какие из вашего кода переменные нужно отправвить в NEXTION, чтобы вывести время, не получается(((
Подскажите пожалуйста как отправить в дисплей минуты и секунды, чтобы было примерно так 00:25:00. Счет времени обратный (желательно) или нарастающий!
СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!СПАСИБО!
unsigned long timer = 0; // переменная для таймера bool timerenabled= 0 ; // флаг включен таймер или нет int interval = 25; // врем работы таймера, мин int min_timer = 0; // минуты таймера , ТО ЧТО ВЫ ПРОСИЛИ!!! int sec_timer = 0; // секунды таймера, ТО ЧТО ВЫ ПРОСИЛИ!!! int prevsec_timer = 0; // последнее значение секунд void setup() { pinMode (13, OUTPUT); //управляем встроенным светодиодом digitalWrite (13,0); //cначала севтик выключен Serial.begin(38400); // сериал порт инит timer = millis(); // сбросим таймер на ноль timerenabled= 1 ; // и сразу в сетапе включим таймер } void loop() { if (timerenabled && millis()-timer >=(unsigned long)interval * 60000UL) { timerenabled = 0; digitalWrite (13, 1); } // если таймер кончился включим встроенный светодиод //ниже запись мин и сек таймера в переменные if (timerenabled) {min_timer = (millis()-timer)/60000UL; sec_timer = (millis()-timer)/1000 - min_timer*60; if (sec_timer==60) {sec_timer = 0; min_timer++;}} //ниже распечатка в сериал порт минут и секунд таймера, как только секунда поменяется. if (sec_timer!=prevsec_timer) { //если секунда изменила своё значение if (min_timer<10) Serial.print ("0"); // если минут менее 10 печатаем ноль перед минутами //ниже выводим минуты и секунды таймера в сериал порт. Serial.print (min_timer); Serial.print (" min "); if (sec_timer<10) Serial.print ("0"); Serial.print (sec_timer); Serial.println (" sec"); prevsec_timer = sec_timer; //сохраняем последнее значение секунд } }"""MaksVV""" доброго времени суток!!!
спасибо за скетч, но к сожелению адаптировать его под себя мне тупенькому не удалось(((
ПОМОГИТЕ ЕГО ДОРАБОТАТЬ и скиньте ваш кошелючек туда упадет обещанный бонус))))))
напоминаю задачу
-пользователь нажимает на дисплее NEXTION кнопку СТАРТ, включается музыка и пины 8,10,12 (время их работы 25 мин)
-пользователь нажимает на дисплее NEXTION кнопку КВАРЦ, проигрывается сообщение "включен кварц" и пины 11 (время их работы 15 мин)
-пользователь нажимает на дисплее NEXTION кнопку СТОП, выключаются все пины и включается только пин 9 (время не ограничено).
ВОПРОС:
- как передать в NEXTION время работы, чтобы было видно период работы (25 и 15 мин)?
- как сделать, так чтобы при нажатии на кнопку СТАРТ проиграло сообщение "СЕАНС НАЧАТ" а затем начала играть музыка рандомом непрерывно (трек за треком)
- как сделать, так чтобы при нажатии на кнопку КВАРЦ проиграло сообщение "ВКЛЮЧЕН КВАРЦ".
- как сделать, так чтобы при нажатии на кнопку СТОП проиграло сообщение "СЕАНС ОКОНЧЕН".
- и последнее, сейчас работает так
/////////////////////////////////////КНОПКА START///////////////////////////////////
String message = myNextion.listen(); //check for message if(message == "65 0 3 1 ffff ffff ffff") { timer = millis(); // как бы сбрасываем таймер на ноль timerenabled = 1; // включаем таймер digitalWrite(RELAY9, 1); //выключаем реле digitalWrite(RELAY11, 1); //выключаем реле digitalWrite(RELAY8, 0); // ну и включаем реле digitalWrite(RELAY10, 0); // ну и включаем реле digitalWrite(RELAY12, 0); // ну и включаем реле mp3_play (); // запускаем трек delay (100); mp3_random_play (); // Даем команду проигрывать треки в случайной последовательности //////////////////////////////////////////////////////////////////////////ПОЧЕМУ ПРИ КАЖДОМ НАЖАТИИ ИГРАТЬ НАЧИНАЕТ ВСЕ ТАКЖЕ С ПЕРВОГО ТРЕКА, ХОТЯ СТОИТ РАНДОМ??????
ВОТ КАК Я ЕГО ПОПЫТАЛСЯ АДАПТИРОВАТЬ))
#define RELAY8 8 // диспригатор 220 #define RELAY9 9 // ВЫХОД и вытяжка 12 и 220 #define RELAY10 10 // Конвекционные вентиляторы 12 #define RELAY11 11 // КВАРЦ 220 #define RELAY12 12 // ИОНИЗАТОР 220 #include <SoftwareSerial.h> #include <Nextion.h> #include <DFPlayer_Mini_Mp3.h> SoftwareSerial nextion(2, 3);// Nextion TX to pin 2 and RX to pin 3 of Arduino Nextion myNextion(nextion, 9600); int interval = 25; // время работы таймера реле 8, 10, 12, мин int interval2 = 15; // время работы таймера реле 11, мин unsigned long timer =0; // переменная для работы таймера unsigned long timer2 =0; // переменная для работы таймера bool timerenabled = 0; // флаг включен таймер или нет bool timerenabled2 = 0; // флаг включен таймер или нет int min_timer = 0; // минуты таймера int min_timer2 = 0; // минуты таймера int sec_timer = 0; // секунды таймера int sec_timer2 = 0; // секунды таймера int prevsec_timer = 0; // последнее значение секунд int prevsec_timer2 = 0; // последнее значение секунд void setup() { Serial.begin(9600); mp3_set_serial (Serial); //set Serial for DFPlayer-mini mp3 module delay (100); mp3_set_volume (25); delay (100); pinMode (RELAY8, OUTPUT); digitalWrite(RELAY8, HIGH ); pinMode (RELAY9, OUTPUT); digitalWrite(RELAY9, HIGH ); pinMode (RELAY10, OUTPUT); digitalWrite(RELAY10, HIGH ); pinMode (RELAY11, OUTPUT); digitalWrite(RELAY11, HIGH ); pinMode (RELAY12, OUTPUT); digitalWrite(RELAY12, HIGH ); myNextion.init(); } void loop() { ////////////////////////////КНОПКА START//////////////////////////////////////// String message = myNextion.listen(); //check for message if(message == "65 0 3 1 ffff ffff ffff") { timer = millis(); // как бы сбрасываем таймер на ноль timerenabled = 1; // включаем таймер digitalWrite(RELAY9, 1); //выключаем реле digitalWrite(RELAY11, 1); //выключаем реле digitalWrite(RELAY8, 0); // ну и включаем реле digitalWrite(RELAY10, 0); // ну и включаем реле digitalWrite(RELAY12, 0); // ну и включаем реле mp3_play (); // запускаем трек delay (100); mp3_random_play (); // Даем команду проигрывать треки в случайной последовательности } if (timerenabled && millis()-timer> (unsigned long) interval*60000UL) //если таймер был включен и он кончился { timerenabled = 0 ; // выключаем таймер digitalWrite(RELAY8, 1); //выключаем реле digitalWrite(RELAY10, 1); //выключаем реле digitalWrite(RELAY11, 1); //выключаем реле digitalWrite(RELAY12, 1); //выключаем реле digitalWrite(RELAY9, 0); //включаем реле mp3_stop (); delay (100); } ///////////////////////////////////////////END///////////////////////////////////////////// //////////////////////////КНОПКА QVARC///////////////////////////////////////////// if(message == "65 0 4 1 ffff ffff ffff") { timer = millis(); // как бы сбрасываем таймер на ноль timerenabled = 1; // включаем таймер digitalWrite(RELAY8, 1); //выключаем реле digitalWrite(RELAY9, 1); //выключаем реле digitalWrite(RELAY10, 1); //выключаем реле digitalWrite(RELAY12, 1); //выключаем реле digitalWrite(RELAY11, 0); // ну и включаем реле } if (timerenabled2 && millis()-timer2> (unsigned long) interval2*60000UL) //если таймер был включен и он кончился { timerenabled2 = 0 ; // выключаем таймер digitalWrite(RELAY11, 1); //выключаем реле digitalWrite(RELAY9, 0); //включаем реле } //////////////////////////////////END/////////////////////////////////////// //////////////////////////////КНОПКА STOP///////////////////////////////////////// if(message == "65 0 5 1 ffff ffff ffff") { timer = millis(); // как бы сбрасываем таймер на ноль timerenabled = 0; // выключаем таймер timer2 = millis(); // как бы сбрасываем таймер на ноль timerenabled2 = 0; // выключаем таймер digitalWrite(RELAY8, 1); // ну и выключаем реле digitalWrite(RELAY9, 0); // ну и выключаем реле digitalWrite(RELAY10, 1); // ну и выключаем реле digitalWrite(RELAY11, 1); // ну и выключаем реле digitalWrite(RELAY12, 1); // ну и выключаем реле mp3_stop (); delay (100); } ////////////////////////////END/////////////////////////////////////// //****************************РУЧНОЕ УПРАВЛЕНИЕ***************************************** if(message == "1") { digitalWrite (RELAY8, LOW); } if(message == "2") { digitalWrite (RELAY8, HIGH); } if(message == "3") { digitalWrite (RELAY9, LOW); } if(message == "4") { digitalWrite (RELAY9, HIGH); } if(message == "5") { digitalWrite (RELAY10, LOW); } if(message == "6") { digitalWrite (RELAY10, HIGH); } if(message == "7") { digitalWrite (RELAY11, LOW); } if(message == "8") { digitalWrite (RELAY11, HIGH); } if(message == "9") { digitalWrite (RELAY12, LOW); } if(message == "10") { digitalWrite (RELAY12, HIGH); } if(message != ""){ // if a message is received... Serial.println(message); //...print it out } }Даа... Техника в руках дикаря...
[quote=alex_r61]
Даа... Техника в руках дикаря...
/quote]
Тсссс....! Не спугните, а то обидется, уйдёт с форума и народ без бонусов останется.
Птичкудисплей жалко…ЕвгенийП - это ЕвгенийПидор?
alex_r61 - если ты ебл@н помочь не смог заткн* свой ебальн*к! хуйсо* ебӘный
Если вы голубки alex_r61--ЕвгенийП долбитесь - долбитесь дальше, только еб@льник зӘткните
Вот и интеллигентность полезла. После второго пузыря
А вот и обещанных бонусов дождались