Помогите с программой
- Войдите на сайт для отправки комментариев
Чт, 11/02/2016 - 11:06
Вобщем написал программу. В которой две тактовые кнопки и 6 электроклапанов. клапаны срабатывают поочереди. Условие начала срабатывание что обе кнопки дают сигнал на пины. по нажатию и отпусканию кнопки buttonState2 программа должна прекратить срабатывание клапанов. так вот не могу добиться этого. Помогите пожалуйста.
const int buttonPin2 = 12; const int buttonPin = 10; // the number of the pushbutton pin const int rel1 = 11; const int rel2 = 9; const int rel3 = 8; const int rel4 = 7; const int rel5 = 6; const int rel6 = 5; const int rel7 = 4; const int rel8 = 3; // variables will change: int buttonState = 0; int buttonState2 = 0; // variable for reading the pushbutton status void setup() { // initialize the LED pin as an output: pinMode(rel1, OUTPUT); pinMode(rel2, OUTPUT); pinMode(rel3, OUTPUT); pinMode(rel4, OUTPUT); pinMode(rel5, OUTPUT); pinMode(rel6, OUTPUT); pinMode(rel7, OUTPUT); pinMode(rel8, OUTPUT); // initialize the pushbutton pin as an input: pinMode(buttonPin, INPUT); pinMode(buttonPin2, INPUT); } void loop() { // read the state of the pushbutton value: buttonState = digitalRead(buttonPin); buttonState2 = digitalRead(buttonPin2); // check if the pushbutton is pressed. // if it is, the buttonState is HIGH: if (buttonState == HIGH && buttonState2 == HIGH) { // turn LED on: digitalWrite(rel8,HIGH); } else { digitalWrite(rel8,LOW); } if (rel8 == HIGH) { delay(60000); digitalWrite(rel1, HIGH); delay(500); digitalWrite(rel1, LOW); delay(10000); digitalWrite(rel2, HIGH); delay(500); digitalWrite(rel2, LOW); delay(10000); digitalWrite(rel3, HIGH); delay(500); digitalWrite(rel3, LOW); delay(10000); digitalWrite(rel4, HIGH); delay(500); digitalWrite(rel4, LOW); delay(10000); digitalWrite(rel5, HIGH); delay(500); digitalWrite(rel5, LOW); delay(10000); digitalWrite(rel6, HIGH); delay(500); digitalWrite(rel6, LOW); delay(10000); digitalWrite(rel7, HIGH); delay(500); digitalWrite(rel7, LOW); digitalWrite(rel8,LOW); } }
Это что за зляк такой?))) У вас с delay'ем не прекратиться тут ничего пока весь код с 51 по 83 строчки не выполнится... Уходите от delay, изучив пример BlinkWithoutDelay
Привет попробуйте.
Где добавить ваш код указал
bj2000 у вас пауз delay на 12сукунд, при работе реле учтите что кнопку нужно будет удерживать-пока все они не пройдут.
Не парьтесь на счет пауз, вам нужно то что вы хотите воплощать в код любыми методами, вот когда все будете писать без хелпа и примеров, с головы тогда и начнете совершенствовать свой код.
В коде delay больше 1000 считаю плохо но не смертельно))))
Спасибо за коментарии я просто только начинаю и всех тонкостей пока не изучил.
bj2000 у вас пауз delay на 12сукунд,
Нолик потеряли)))
Там должна быть пауза 60 секунд и потом 0.5 секунды срабатывает реле и пауза 10 секунд до следующего релеюи так 6 штук. Только в начале пауза большая.
Кнопку держать не надо так как реле 8 реализует самоподхват кнопки до конца срабатывания клапанов
Кнопку держать не надо так как реле 8 реализует самоподхват кнопки до конца срабатывания клапанов
Вы наверное не совсем поняли почему все так против delay, как только до него доходит код-контроллер ничего не делает только ждет окончание этой команды!
И если программа дойдет до 55-й строки вашего кода то среагировать на кнопки сможет только через 120секунд.
Я все прекрасно понял , только знаний пока не хватает у меня. Вот я и прошу помощи ). Ваш код не работает. Без delay не получается у меня сделать. Buttonstate2 на размыкание.
Я думал вам нужно управление двумя кнопками, нажали обе запустились реле, нажали только вторую выключились реле.
Зачем самоподхват это же не аналоговая техника все можно указать в коде.
Непонятен алгоритм, хотел помочь.
Алгоритм такой. Одна кнопка на замыкание, а вторая на размыкание . Нажимаем и отпускаем кнопку 1 начинается работа клапанов и если в процессе работы клапанов нажать и отпустить 2 кнопку то программа прекращается. Буду очень признателен если поможете и я смогу поучиться.
Теперь ясно.
одна кнопка включила, вторая выключила.
вот код
Так в моем коде delay останется?
Там где я указал ваш код строка 26 пишите включение реле в своем порядке хоти-те с delay хоти-те без.
в строке 29 пишите отключение.
Я так понял, из кода, что у Вас не кнопки а переключатели. Тогда пример такой а если кнопки то надо код по кнопкам подправить. Не проверял но должно работать, проверьте!!!
Проверил, программа работает вот только клапана не срабатывают.
Смените 55
строчку
if
(rel8 == HIGH)
на if (digitalRead(rel8) == HIGH)vosara спасибо большое программа работает, а как сделать перед началом срабатывания 1го реле 60 сек задержку?
Программа работает только из цикла не выходит после 6го клапана.
Да программа закольцована специально, Я посмотрев ваш код подумал что так и должно быть пока рел8 включено. других условий Вы не оговаривали.