работа реле по переменно не мешая друг другу

artemon25
Offline
Зарегистрирован: 25.12.2015

Добрый всем вечер может ктото подсказать мне по скетчу

#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
}
 
но где иммено его добавить а то я его в конце вставляю он работает не так как как я хочу 
если кому не лень пропишите в моём скетче куда и как втавить то что работает как надо
Заранее всем спасибо за внимание и за отве
Logik
Offline
Зарегистрирован: 05.08.2014

 

if (mySwitch.getReceivedValue() == 5312960) {   // 6133332 - код Включения1

Что это?! Как жить с таким?!

artemon25
Offline
Зарегистрирован: 25.12.2015

прошу прощения за каламбур обратить внимание надо на первые цифры дальше идет как напоминание что куда вот кину отредактированный как должно быть но вопрос  в другом

#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) {   
      digitalWrite(relayPin, HIGH);
      digitalWrite(relayChn, HIGH);
      digitalWrite(relayPin, LOW);
      digitalWrite(relayChn, LOW);
    }
 
    if (mySwitch.getReceivedValue() == 5312816) {   
      digitalWrite(relayOn, HIGH);
      digitalWrite(relay6, HIGH);
      digitalWrite(relayOn, LOW);
      digitalWrite(relay6, LOW);
    }  
 
   
      
    if (mySwitch.getReceivedValue() ==   5312780) {  
      digitalWrite(relayPin, LOW);
       digitalWrite(relayChn, LOW);
      digitalWrite(relayPin, HIGH);
       digitalWrite(relayChn, HIGH);
    }   
 
     if (mySwitch.getReceivedValue() == 5312771) {  
      digitalWrite(relayOn, LOW);
      digitalWrite(relay6, LOW);
      digitalWrite(relayOn, HIGH);
      digitalWrite(relay6, HIGH);
     }
  } 
    mySwitch.resetAvailable();
  
}
как сделать чтоб реле включались попеременно если две релюхи включены то другие две не включатся и наоборот