Прошу помощи,радиопульт +приемник 433Мгц +ардуино

Добрый день.Прошу сильно не пинать ,я новичок в программинге .
Суть такая , нужно управлять двумя светодиодами (нагрузкой)
(Пульт с двумя кнопками соответственно отправляет всего два кода.)
Например нажимаем одну кнопку загорается первый светодиод и через несколько секунд гаснет, нажимаем вторую кнопку пульта загорается второй светодиод и так же через некоторое время гаснет.
Набросал код но он глючит но выполняет данные действия .Прошу помощи уже всю голову сломал

RCSwitch mySwitch = RCSwitch();
int LED1 = 11;
int LED2 = 12;

void setup()
{
  Serial.begin(9600);
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  mySwitch.enableReceive(0);  // Receiver on inerrupt 0 => that is pin #2
}
void loop(){

  if (mySwitch.available()){
      int value = mySwitch.getReceivedValue();
      if ( mySwitch.getReceivedValue() == 4658354)
          digitalWrite(LED1, HIGH);
          delay(500);
          digitalWrite(LED1, LOW);
          mySwitch.resetAvailable();}
  if (mySwitch.available()){
      int value = mySwitch.getReceivedValue();
      if ( mySwitch.getReceivedValue() == 4658356)
          digitalWrite(LED2, HIGH);
          delay(500);
          digitalWrite(LED2, LOW);
          mySwitch.resetAvailable();
          }
}

Что делают строки 15 и 22 ?

Изучите синтаксис оператора if
Когда вы пишете так:

по определенному коду у вас выполняется только первая строка после условия, то есть

  digitalWrite(LED1, HIGH);

Остальные строки выполняются при любом принятом коде.

Если вы хотите, чтобы по условию выполнялись несколько строк - они должны быть заключены в фигурные скобки:

if (condition)
 {
.....
 }
 else
{
....
}
1 лайк

Поправил в такой вид все гораздо лучше ставло работать . Есть еще какие рекомендации ? Спасибо

if (mySwitch.available())
      int value = mySwitch.getReceivedValue();
      if ( mySwitch.getReceivedValue() == 4658354)
      
          {  
          digitalWrite(LED1, HIGH);
          delay(500);
          digitalWrite(LED1, LOW);
          mySwitch.resetAvailable();
          }
      else
      if ( mySwitch.getReceivedValue() == 4658356) 
          {
          digitalWrite(LED2, HIGH);
          delay(500);
          digitalWrite(LED2, LOW);
          mySwitch.resetAvailable();
          }
#define Led1 11
#define Led2 12

RCSwitch mySwitch = RCSwitch();

void setup () {
  pinMode(Led1, OUTPUT);
  pinMode(Led2, OUTPUT);
  mySwitch.enableReceive(0);
}

void loop() {
  if (mySwitch.available()) {
    digitalWrite(mySwitch.getReceivedValue() == 4658354 ? Led1 : Led2, HIGH);
    delay(500);
    digitalWrite(Led1, LOW);
    digitalWrite(Led2, LOW);
    mySwitch.resetAvailable();
  }
}

А для первого IF вы почему опять скобки { } потеряли ???

if ( mySwitch.available() )
      {
      int value = mySwitch.getReceivedValue();
      if ( value  == 4658354 )
          {  
          digitalWrite(LED1, HIGH);
          delay(500);
          digitalWrite(LED1, LOW);
          }
      else
      if ( value  == 4658356 ) 
          {
          digitalWrite(LED2, HIGH);
          delay(500);
          digitalWrite(LED2, LOW);
          }
       mySwitch.resetAvailable();
      }
...
int LED1 = 11;
int LED2 = 12;
...
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
...

Для чего тогда обьявлены LED1 и LED2 ?

1 лайк
  1. Код вставлен не полностью. Попробуйте его скомпилировать в таком виде.
  2. Вы забыли указать какая именно у Вас Ардуина. А между тем, используемая Вам библиотека с некоторыми работает через пень колоду.