работа реле по переменно не мешая друг другу
- Войдите на сайт для отправки комментариев
Ср, 02/03/2016 - 21:39
Добрый всем вечер может ктото подсказать мне по скетчу
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
int relay6 = 6;
int relayPin = 7; //Реле будет тут
int relayChn = 8;
int relayOn = 9;
void setup() {
Serial.begin(9600);
mySwitch.enableReceive(0); // приемник на pin 2 (DATA)
pinMode(relayPin, OUTPUT);
pinMode(relayChn, OUTPUT);
pinMode(relayOn, OUTPUT);
pinMode(relay6, OUTPUT);
digitalWrite(relayPin, HIGH);
digitalWrite(relayChn, HIGH);
digitalWrite(relayOn, HIGH);
digitalWrite(relay6, HIGH);
}
void loop() {
if (mySwitch.available()) {
int value = mySwitch.getReceivedValue();
if (value == 0) {
Serial.print("error code"); // Ошибка приемка кода
} else {
Serial.print("code good"); // Принял код
Serial.print( mySwitch.getReceivedValue() );
}
if (mySwitch.getReceivedValue() == 5312960) { // 6133332 - код Включения1
digitalWrite(relayPin, HIGH);
digitalWrite(relayChn, HIGH);
digitalWrite(relayPin, LOW);
digitalWrite(relayChn, LOW);
}
if (mySwitch.getReceivedValue() == 5312816) { // 6133332 - код Включения3
digitalWrite(relayOn, HIGH);
digitalWrite(relay6, HIGH);
digitalWrite(relayOn, LOW);
digitalWrite(relay6, LOW);
}
if (mySwitch.getReceivedValue() == 5312780) { // 6133392 - код выключения1
digitalWrite(relayPin, LOW);
digitalWrite(relayChn, LOW);
digitalWrite(relayPin, HIGH);
digitalWrite(relayChn, HIGH);
}
if (mySwitch.getReceivedValue() == 5312771) { // 6133392 - код выключения3
digitalWrite(relayOn, LOW);
digitalWrite(relay6, LOW);
digitalWrite(relayOn, HIGH);
digitalWrite(relay6, HIGH);
}
}
mySwitch.resetAvailable();
}
у меня это работает от радиопульта попарно тоесть одну кнопку нажимаю включается два реле другую нажимаю эти два реле выключаются третья кнопка включает вторую пару реле и соответсвенно четвёртая выключает а вопрос нужно чтобы если какие либо два реле включены то другие два не включаются и наоборот . тоесть я так понимаю что в тело void loop() { надо добавить функцию
else {
digitalWrite(relay6, HIGH); пин6
digitalWrite(relayPin, HIGH); пин7
digitalWrite(relayChn, LOW); пин8
digitalWrite(relayOn, LOW); пин9
}
но где иммено его добавить а то я его в конце вставляю он работает не так как как я хочу
если кому не лень пропишите в моём скетче куда и как втавить то что работает как надо
Заранее всем спасибо за внимание и за отве
вот это работать не будет:
Какой смысл включать реле, чтобы через микросекунду его выключить? Оно даже отработать не успеет.
Тут тоже ошибка - максимальный размер int равен 32767, а у тебя 5312960.
нужно чтобы если какие либо два реле включены то другие два не включаются и наоборот
То есть чтобы что-то включилось, они все должны быть выключены?
спасибо конечно за коментарий но начнем с того что этот скетч работает и работает отлично если включать реле с пульта когда захочешь и выключать и по коментарию
Тут тоже ошибка - максимальный размер int равен 32767, а у тебя 5312960.
могу сказать что цифры 5312960 это код который дает радиопульт и он тоже работает и нареканий нет при включение в сеть ардуино все реле выключены а затем если надо я могу включить реле попарно и выключить также а мне надо допустим при включение все реле так же выключены затем я включил одну пару реле а вторую не смог включить пока не выключу первую пару поэтому мне в мой скетч что надо добавить а что и куда честно говоря разобраться не могу. вот скетч который у меня работает просто
#include <RCSwitch.h>
По ходу, у вас реле включаются по низкому уровню, поэтому код можно подсократить:
и т.п., т.е. первые пары digitalWrite в каждом блоке if можно выкинуть - они бессмысленны.
По поводу задачи: если я правильно понял, то есть четыре кнопки, по паре на каждую пару реле: одна кнопка включает свою пару реле, вторая - выключает. И надо сделать так, чтобы вторая пара реле не включалась, есть включена первая, и наоборот, так? Если так, то псевдокод, для понимания логики:
Принцип, надеюсь, понятен. Писал навскидку, грязно, некрасиво :)
Спасибо за подсказку к сожалению сейчас не могу проверить завтра проверю и отпишусь
По поводу что принцип понятен если честно не понятен но постараюсь разобраться а к вам просьба если есть возможность написать точный скетч со всеми моими кодами для радио управления. Заранее спасибо за подсказки и за помощь
А чем мой скетч не нравится?
мне всем нравится но он не окончен где объявить какие пины задействованны под реле как OUTPUT нужны 6789 объявить что радиоприёмник находится на пине 2 наверное надо подключить библиотеку #include <RCSwitch.h> ну и наконец прописать мои коды с пульта
я подумал что может быть должно быть так
Так ведь все уже прописано:
Если у тебя реле инверсные, то в строках 10-11 поменять местами HIGH и LOW.
я втавляю как наисано у тебя а что делать мне с ошибкой которая выходит на
unsigned long receivedValue = mySwitch.getReceivedValue(); и пишет ошибку
в моем скетче (см. пост #1) нет строки unsigned long receivedValue = mySwitch.getReceivedValue();
01
enum
{RELAY_ON = LOW, RELAY_OFF = HIGH};
// чтобы настроить уровень включения реле
02
void
SwitchRelays(
bool
bOn,
byte
pin1,
byte
pin2)
03
{
04
digitalWrite(pin1, bOn ? RELAY_ON : RELAY_OFF);
05
digitalWrite(pin2, bOn ? RELAY_ON : RELAY_OFF);
06
}
07
08
bool
bRelayGroup1IsOn =
false
;
09
bool
bRelayGroup2IsOn =
false
;
10
11
void
loop
()
12
{
13
unsigned
long
receivedValue = mySwitch.getReceivedValue();
14
switch
(receivedValue)
15
{
16
case
5312960: {
17
if
(!bRelayGroup2IsOn) {
18
bRelayGroup1IsOn =
true
;
19
SwitchRelays(
true
,1,2);
// включаем первую группу реле, если не включена вторая
20
}
21
22
}
23
break
;
24
25
case
11111: {
26
SwitchRelays(
false
,1,2);
// выключаем первую группу реле
27
bRelayGroup1IsOn =
false
;
28
}
29
break
;
30
case
2222: {
31
if
(!bRelayGroup1IsOn ) {
32
SwitchRelays(
true
,3,4);
// включаем вторую группу реле, если не включена первая
33
bRelayGroup2IsOn =
true
;
34
}
35
}
36
break
;
37
38
case
333: {
39
SwitchRelays(
false
,3,4);
// выключаем вторую группу реле
40
bRelayGroup2IsOn =
false
;
41
}
42
break
;
43
case
0:
44
break
;
45
default
:
46
break
;
47
}
48
}
на 13 строке дает мне ошибку
будьте внимательны, этот скетч давал DIYMan, а по его скетчу все вопросу к нему :)
прошу прощения сразу на нескольких форусах лазию и ошибся но тогда я вообще не понял какой именно ваш скетч который вы предлогаете продублируйте пожайлуста
вы оочень невнимательны, два поста назад было сказано: в моем скетче (см. пост #1)...
Клапауцийxxx, вернись!!! Моя ушла в монастырь...
да действительно я лохонулся этот пост у меня был а скетч скрыт а я и не увидел что он скрыт извини что мозги делал сейчас проверю и отпишусь
всё похоже работает единственное при выключение второй пары реле при условии что первая пара не ключена при нажатие кнопки выключение вторая пара выключается а первая сама по себе включается где надо исправить?
ага, ошибочка там была (копипаст - зло).
Клапауцийxxx, вернись!!! Моя ушла в монастырь...
а, смысл? - объяснять челу с повреждённым логическим мышлением, что у него что то не то с головой?
всё отлично работает благодарю что не отказались в помощи могу чисто символическую сумму перечислить на телефон или как то по другому в знак благодарности и извиняюсь за непонятки которые возникли во время переписки
Клапауцийxxx, вернись!!! Моя ушла в монастырь...
а, смысл? - объяснять челу с повреждённым логическим мышлением, что у него что то не то с головой?
я конечно понимаю что есть люди которые во всём разбираются но и у меня с головой всё в порядке и слава богу с мышлением всё ОК а вам если лишний раз объяснять тяжело то не надо и других оскарблять.
на этом сайте я только т не знал как им пользоваться где что скрыто и где как обозначенны посты, а вообще всем спасибо за ответы
я конечно понимаю что есть люди которые во всём разбираются но и у меня с головой всё в порядке и слава богу с мышлением всё ОК а вам если лишний раз объяснять тяжело то не надо и других оскарблять.
artemon25 , не наезд ! вовсе !!
не просил - не плати - моя бы обиделась ! скажи "спасибо"
это не ветка - "Ищу исполнителя"
...твоё мнение-решение - главнее , конечно :)-
спасибо что указали на то что на этой ветке услуги без денег этого конечно я не знал
не указывал моя ничего ( нет прав ) - а ты понял правильно !
как спросишь - так и ответят !!!!!
другие темы не читал чё ли ?
artemon25 , не наезд ! вовсе !!
не просил - не плати - моя бы обиделась ! скажи "спасибо"
это не ветка - "Ищу исполнителя"
...твоё мнение-решение - главнее , конечно :)-
спасибо что указали на то что на этой ветке услуги без денег этого конечно я не знал
не указывал моя ничего ( нет прав ) - а ты понял правильно !
как спросишь - так и ответят !!!!!
другие темы не читал чё ли ?
много чего перечитал и скажу прямо я начинающий и поэтому сейчас пытаюсь научиться сразу многому ну как говориться будем грызть гранит науки
artemon25 , читай и изучай ДатаШиты....
...здесь - читай и отмечай