Новичок
Регистрация: 03.02.2017
Сообщений: 6
Репутация: 10
|
Здравствуйте. Помогите пожалуйста реализовать проект.
Нужно запитать два реле по следующему алгоритму работы: 1. Включается реле №1 на 1с. 2. Реле №1 выключается на 10 минут. 3. Через 2 секунду после включения реле №1 включается реле №2. 4. Реле 2 отключается через 1 с работы на 10 минут. Цикл замкнутый (пока не отключу кнопкой). Включать-включать хочу всё с одной кнопки. Не судите строго - читаю про Ардуино 3й день и пользуясь исключительно видеоуроками из Ютуба попытался написать следующее. void setup() { pinMode(13, OUTPUT); // реле №1 pinMode(11, OUTPUT); // реле №2 pinMode(12, INPUT_PULLUP); // кнопка включения-выключения } void loop() { if ( digitalRead(12) == LOW ) digitalWrite(13, 11, HIGH); else digitalWrite(13, 11 LOW); { digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); delay(1000); digitalWrite(11, HIGH); delay(1000); digitalWrite(11, LOW); delay(1000); digitalWrite(13, LOW); delay(9000); digitalWrite(11, LOW); delay(9000); } } Поскольку параллельное выполнение задач вроди как невозможно (опять же исходя из моих скромных знаний), попытался реализовать последовательно. Проаверить пока даже негде - только завтра обещали прислать "комплект новичка" на базе Arduino UNO. Ранее вообще к программированию отношения не имел, так что не судите строго пожалуйста. Всем заранее спасибо. |
||
Оценка
|
Новичок
Регистрация: 06.12.2017
Сообщений: 4
Репутация: 10
|
Не надо из Ютюба... Читать - лучше и быстрее.
Очень редко надо delay, это останавливает выполнение всего. Вбейте в поисковике что-то типа "arduino замена delay" Потом "arduino кнопка прерывание". Что у Вас сейчас происходит - на краткий миг Ардуина смотрит, нажата ли кнопка или нет. Потом погружается в долгую процедуру "что-то включим, заснем на секунду, что-то выключим, поспим". Потом опять на краткий миг между прошлым и будущим взглянет на кнопку - не нажата ли в эту долю секунды. Параллельное выполнение задач (во внешем мире - не на уровне кода) на Ардуино зависит от тактовой частоты процессора Ардуины и от количества и трудоемкости этих задач. |
||
Оценка
|
Специалист
|
Вместо функции delay() в основном цикле используйте millis(). Как реализовать тайминги с помощью этой функции полно информации в сети
__________________
Уважаемые пассажиры, самолет ТУ-134 садится. У кого есть зарядка от ТУ-134, просьба пройти в кабину пилота. |
||
Оценка
|
Новичок
Регистрация: 13.05.2021
Сообщений: 2
Репутация: 10
|
Я тоже недавно начал заниматься Arduino. Для проверки можно и не пользоваться отладочными платами. Для этого существуют программы эмитаторы, в торорых вы можите вертуально собирать схему и проверять в реальныз данных, где вы увидите: работает ли ваш скейч и с помощью этого корректировать программу.
рекомендую: 1. https://www.tinkercad.com/dashboard 2. очень хорошая Proteus8- ее используют профи 3. Virtual BreadBoard и много другого. Для программирования рекомендую русскую программу FLPROG- программарование блоками. Почти похожая тоже русская, но к сожалению на "ангельском" XOD IDE от Амперки ( обещают сделать тоже на русском)- ею еще не пользовался. Адександр |
||
Оценка
|
Новичок
Регистрация: 30.03.2010
Сообщений: 25
Репутация: 14
|
Вариант для ТС
Код:
void loop() { begin(t1); on(RELAY1); wait(t1, 1000); off(RELAY1); wait(t1, MIN(10)); end(t1); begin(t2); wait(t2, 2000); on(RELAY2); wait(t2, 1000); off(RELAY2); wait(t2, MIN(10)); end(t2); if (pin(KEY)) halt(); } |
||
Оценка
|
Обратная связь РадиоЛоцман Вверх |