Клеммные колодки Keen Side

Параллельная работа двух реле от Arduino UNO

Новичок
 
Регистрация: 03.02.2017
Сообщений: 6
Репутация: 10
 
03.02.2017 23:53 #1
Здравствуйте. Помогите пожалуйста реализовать проект.

Нужно запитать два реле по следующему алгоритму работы:

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. Ранее вообще к программированию отношения не имел, так что не судите строго пожалуйста.
Всем заранее спасибо.
Оценка
Новичок
 
Регистрация: 30.03.2010
Сообщений: 25
Репутация: 14
4 0
0 0
 
04.02.2017 09:32 #2

У Вас 3 задачи - кнопка, реле1 и реле2

В цикле Вы должны последовательно все эти 3 задачи решать. По простому, скачите с одной на другую и нигде не застряёте. И все будут довольны.))
Оценка
Новичок
 
Регистрация: 06.12.2017
Сообщений: 4
Репутация: 10
0 2
0 0
 
06.12.2017 23:22 #3
Цитата:
Сообщение от iven83
видеоуроками из Ютуба
Не надо из Ютюба... Читать - лучше и быстрее.
Очень редко надо delay, это останавливает выполнение всего.
Вбейте в поисковике что-то типа "arduino замена delay"
Потом "arduino кнопка прерывание".
Что у Вас сейчас происходит - на краткий миг Ардуина смотрит, нажата ли кнопка или нет. Потом погружается в долгую процедуру "что-то включим, заснем на секунду, что-то выключим, поспим". Потом опять на краткий миг между прошлым и будущим взглянет на кнопку - не нажата ли в эту долю секунды.

Параллельное выполнение задач (во внешем мире - не на уровне кода) на Ардуино зависит от тактовой частоты процессора Ардуины и от количества и трудоемкости этих задач.
Оценка
Специалист
 
Аватар для Vadzz
 
Регистрация: 12.11.2008
Адрес: Тирасполь
Сообщений: 2,172
Записей в дневнике: 22
Репутация: 418
406 86
0 0
Отправить сообщение для Vadzz с помощью ICQ
 
07.12.2017 14:38 #4
Вместо функции delay() в основном цикле используйте millis(). Как реализовать тайминги с помощью этой функции полно информации в сети
__________________
Уважаемые пассажиры, самолет ТУ-134 садится. У кого есть зарядка от ТУ-134, просьба пройти в кабину пилота.
Оценка
Новичок
 
Регистрация: 13.05.2021
Сообщений: 2
Репутация: 10
 
16.05.2021 16:15 #5
Я тоже недавно начал заниматься Arduino. Для проверки можно и не пользоваться отладочными платами. Для этого существуют программы эмитаторы, в торорых вы можите вертуально собирать схему и проверять в реальныз данных, где вы увидите: работает ли ваш скейч и с помощью этого корректировать программу.
рекомендую:
1. https://www.tinkercad.com/dashboard
2. очень хорошая Proteus8- ее используют профи
3. Virtual BreadBoard
и много другого.
Для программирования рекомендую русскую программу FLPROG- программарование блоками. Почти похожая тоже русская, но к сожалению на "ангельском" XOD IDE от Амперки ( обещают сделать тоже на русском)- ею еще не пользовался.
Адександр
Оценка
Новичок
 
Регистрация: 30.03.2010
Сообщений: 25
Репутация: 14
4 0
0 0
 
17.05.2021 08:44 #6
Вариант для ТС
Код:
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();
}
Оценка
Ответ
Похожие темы
Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход
Электронные компоненты. Скидки 15%, кэшбэк 15% и бесплатная доставка от ТМ Электроникс
Часовой пояс GMT +3, время: 03:39.
Обратная связь РадиоЛоцман Вверх