Реле.
- Войдите на сайт для отправки комментариев
Уважаемые гуру. Помогите с реализацией. В программировании только начинающий. Имеется 3 реле и 4 кнопки.
int Relay1 = 7; int Relay2 = 6; int Relay3 = 5; int stateRelay1 = LOW; int stateRelay2 = LOW; int stateRelay3 = LOW; int pushButton18 = 9; int pushButton19 = 10; int pushButton21 = 12; int pushButton22 = 13; void setup() { pinMode(pushButton18, INPUT); pinMode(pushButton19, INPUT); pinMode(pushButton21, INPUT); pinMode(pushButton22, INPUT); pinMode(Relay1, OUTPUT); pinMode(Relay2, OUTPUT); pinMode(Relay3, OUTPUT); pinMode(Relay4, OUTPUT); } void loop() { int buttonState18 = digitalRead(pushButton18); int buttonState19 = digitalRead(pushButton19); int buttonState21 = digitalRead(pushButton21); int buttonState22 = digitalRead(pushButton22); //лево - реле1 if(buttonState22 == LOW) { digitalWrite(Relay1, HIGH); } else { digitalWrite(Relay1, LOW); } //право - реле2 if(buttonState19 == LOW) { digitalWrite(Relay2, HIGH); } else { digitalWrite(Relay2, LOW); } //лево, быстро - реле1 и реле3 if(buttonState21 == LOW) { digitalWrite(Relay3, HIGH); digitalWrite(Relay1, HIGH); } else { digitalWrite(Relay3, LOW); digitalWrite(Relay1, LOW); } //право, быстро - реле2 и реле3 if(buttonState18 == LOW) { digitalWrite(Relay3, HIGH); digitalWrite(Relay2, HIGH); } else { digitalWrite(Relay3, LOW); digitalWrite(Relay2, LOW); } }
При нажатии кнопки "лево" реле1 не срабатывает (светодиод индикации еле загорается)
При нажатии кнопки "право" реле2 не срабатывает (светодиод индикации еле загорается)
При нажатии кнопки "лево, быстро" реле1 срабатывает (светодиод светится) реле3 не срабатывает(светодиод индикации еле загорается)
При нажатии кнопки "право, быстро" реле2 и реле3 срабатывают (светодиод светится).
Понимаю, что условия срабатывания мешают друг другу. Не знаю, как их разделить грамотно.
Так же проблема ещё в том, что при нажатии "лево, быстро" и одновременно нажатие "право, быстро" срабатывают все реле, чего быть не должно. К реле будет подключен трёхфазный двигатель, и при случайном зажатии двух кнопок разного направления случится хорошее кз.
Исключить одновременное нажатие, я уже понял как:
Остальное тоже получилось. Топик можно удалить, или оставить для потомков :)
Реализовано.
Реализовано, при нажатии кнопки "лево" - срабатывает реле1, при нажатии кнопки "право" - реле2, при нажатии "лево, быстро" - реле1 и реле3, при нажатии "право, быстро" - реле2 и реле3. Нажатие двух кнопок одновременно исключено.
Вы хотите управлять фазами посредством реле? Или решили на реле собрать инвертор? Спешу огорчить, ваша задумка недолго проработает, вне зависимости от кода, т.к. контактные группы реле на такое не рассчитаны.
Нет, фазами не буду управлять, эти реле будут управлять Лензой, которая в свою очередь уже будет управлять фазами.
http://www.lenze.su/SMD/
На Лелзе входы:
20 + Е1 = лево
20 + Е2 = право
20 + Е1 + Е3 = лево, быстро
20+ Е1 + Е3 = право, быстро
Все ясно. Тогда Вашего кода вполне достаточно. Просто на просторах интернета уже попадались попытки реализовать инвертор на ардуино, а у Вас три реле, почему и подумал об этом.
Нет, это слишком безумно, любое залипание эл.-м. реле чревато - кз. Просто помимо ручного управления, надо повесить и автоматику, а это уже будет делать ардуино.
+Lucky_Wolf Есть еще 1 вариант.
Посмотрите эту тему и конкретно это сообщение.http://arduino.ru/forum/programmirovanie/svetodiod-i-knopka-v-klassakh#comment-205296
Может это вам пригодится.