Не работает IR приёмник

Я собрал схему из стандартного IR приёмника, пищалки и реле. вся суть в том, что тогда, когда я нажимаю кнопку на пульте, не выполняется прописанное мной условие:

        if (ir_rx_results.value == 16724175){
          digitalWrite(2,HIGH);
          }
        if (ir_rx_results.value == 16718055){
          digitalWrite(2,LOW);
          }

Полный код:

#include <IRremote.h>
#include <NewTone.h>

IRrecv ir_rx(8);
decode_results ir_rx_results;

void setup()
{
  Serial.begin(9600);
  pinMode(2, OUTPUT);
  pinMode(4, OUTPUT);

  ir_rx.enableIRIn();

  NewTone(4, 1300, 50);

  delay(6000);

  NewTone(4, 1300, 1000);

  delay(4000);

  digitalWrite(2,HIGH);
  delay(4000);

  digitalWrite(2,LOW);
}


void loop(){
  if (ir_rx.decode(&ir_rx_results)) {
        if (ir_rx_results.value == 16724175){
          digitalWrite(2,HIGH);
          }
        if (ir_rx_results.value == 16718055){
          digitalWrite(2,LOW);
          }
  }
}

P.S. Плата: Arduino Uno, Реле: JQC-3FF-S-Z (На печатной плате с светодиодом).

Реле на пине 2, пищалка на 4, IR приёмник на 8.


Ответы (1 шт):

Автор решения: Герман Борисов

Судя по примерам из библиотеки IRremote в цикле опроса и ожидания пропущен вызов resume()

void loop(){
  if (ir_rx.decode(&ir_rx_results)) {
        if (ir_rx_results.value == 16724175){
          digitalWrite(2,HIGH);
          }
        if (ir_rx_results.value == 16718055){
          digitalWrite(2,LOW);
          }
        ir_rx.resume(); // <-- вот тут
  }
}
→ Ссылка