при выполнении первого условия не выполняются другие
- Войдите на сайт для отправки комментариев
Вс, 30/12/2018 - 21:15
Всем Доброго времени суток. Это моя первая попытка работы с данной штуковиной раньше больше общался с релюшками по этому зарание прошу прощения если задаю глупые вопросы.
1 условие При вкл. К1 светодиод на 8 выходе горит 5 сек.
2 условие При вкл К2 светодиод на 9 выходе горит 10 сек.
3 условие При вкл К3 светодиод на 8 и 9 выходе горят 15 сек.
Вопрос: При выполнеии любого из условий не работает другое условие.
Пока горит 1 светодиод 5 секунд при замыкании К 2 ничего не происходит.
Помогите исправить
int led1Pin = 8; int led2Pin = 9; int button1Pin=2; int button2Pin=3; int button3Pin=4; void setup() { pinMode(led1Pin, OUTPUT); pinMode(led2Pin, OUTPUT); pinMode (button1Pin,INPUT); pinMode (button2Pin, INPUT); pinMode (button3Pin, INPUT); } void loop() { if (digitalRead (button1Pin) == 1) // если кнопка 1 нажата, то { digitalWrite(led1Pin,1); // загорается диод 1 на 5 сек delay (5000); digitalWrite (led1Pin,0); // потом выключается } if (digitalRead (button2Pin) == 1) // если кнопка 2 нажата, то { digitalWrite(led2Pin,1); // загорается диод 2 на сек delay (10000); digitalWrite (led2Pin,0); // потом выключается } if (digitalRead (button3Pin) == 1) // если кнопка 3 нажата, то { digitalWrite(led1Pin,1); // загорается диод 1 и 2 на 15 сек digitalWrite(led2Pin,1); delay (15000); digitalWrite (led1Pin,0); // потом выключается digitalWrite (led2Pin,0); } }
Пока горит 1 светодиод 5 секунд при замыкании К 2 ничего не происходит.
Почему ничего не происходит? Ваша программа активно работает и ждёт пока эти 5 сек. пройдут. Вы же сами написали в строке №20
delay (5000);
вот она и ждёт. И, разумеется, ничего другого не делает.
Исправить это невозможно, нужно переписать программу по-другому.
Чтобы понять как переписать,
1) откройте первый пример и напечатйте его на бумаге.
2) откройте второй пример и тоже напечатйет его на бумаге.
Положите листы рядом и внимательно сравните, поймите разницу в подходах.
Ваша программа сделана по образу и подобию первого из примеров. А нужно Вам сделать по образу и подобию второго.
Подумайте и сделайте.
Удачи!
#18
Что там исправлять. Все в топку !!
ну вот, человек старался, ему разумный коммент в посте 1 дали. А вы сразу готовое решение, и как ТС научится с таким подходом?
agafonov_86, delay - "вешает" контроллер на указаное время, очень опасная вешь в коде, и уберите третью кнопку (из кода), потом добавить будет не сложно, но начните с 2х кнопок.
Всем Доброго времени суток. Это моя первая попытка работы с данной штуковиной раньше больше общался с релюшками по этому зарание прошу прощения если задаю глупые вопросы.
1 условие При вкл. К1 светодиод на 8 выходе горит 5 сек.
2 условие При вкл К2 светодиод на 9 выходе горит 10 сек.
3 условие При вкл К3 светодиод на 8 и 9 выходе горят 15 сек.
Вопрос: При выполнеии любого из условий не работает другое условие.
А во-вторых, именно так и должно быть, т.к. сформулированные Вами условия являются взаимоисключающими. Например, светодиод не может одновременно гореть и 5 и 15 секунд - либо одно, либо другое.
Если Вы хотите чего-то другого, то следует переформулировать условия так, чтобы они правильно отражали Ваши желания.
(говоить о коде - пока еще рано)