ИК передатчик и приёмник в одной ардуино

palikar

✩✩✩✩✩✩✩
22 Янв 2020
9
0
Калининград
Задача:
в адруино посылать код с ик-пульта, а отправляться будет другой код.
Проблема:
сигнал отправляется из ардуино только один раз. Что не так в коде?
Помогите, пожалуйста.
Я только учусь и этот код написал смотря на другие скетчи, из кусков составил, можно сказать.

C++:
#include <IRremote.h>
IRsend irsend;
IRrecv irrecv(5);
decode_results results;

void setup() {
irrecv.enableIRIn();
}

void loop()
{
  if ( irrecv.decode( &results ))
    {
      switch(results.value)
      {
        case(0x1FE4CB3):
          irsend.sendNEC(0x1FE8C73, 32);
          break;
      }
      irrecv.resume();
    }
}
 

kalobyte

★★★✩✩✩✩
1 Янв 2020
726
146
irrecv.resume();
надо поставить перед последней фигурной скобкой
 

kalobyte

★★★✩✩✩✩
1 Янв 2020
726
146
а что примеры в библиотеке говорят?
скинь линк на нее
 

palikar

✩✩✩✩✩✩✩
22 Янв 2020
9
0
Калининград
@kalobyte, примеры мне ничем не помогли, либо я олень.
Короче решил проблему, добавив в конце irrecv.enableIRIn(); и после case и перед последней фигурной скобкой delay.
Если один из delay убрать, то тогда на длительное нажатие кнопки не срабатывает, т.е. нажимать нужно очень кратковременной, чтобы работало. Но даже так работает не очень корректно.
C++:
#include <IRremote.h>
IRsend irsend;
IRrecv irrecv(5);
decode_results results;

void setup() {
irrecv.enableIRIn();
}

void loop()
{
  if ( irrecv.decode( &results ))
    {
      switch(results.value)
      {
        case 0x1FE4CB3:
        delay(50);
          irsend.sendNEC(0x1FE8C73, 32);
          break;
      }
      irrecv.resume();
      irrecv.enableIRIn();
    }
    delay(50);
}
 
Изменено: