diy/아두이노

[에러]irremote 라이브러리 결과가 항상 ffff(65536)

do121 2024. 1. 14. 11:10

아두이노에서 아래와 같이 했을때 원래는 잘나왔는데 최근에 아두이노 ide를 2.2로 바꾸고나서 결과가 항상 ffff나와서 검색을 해봐도 도저히 원인 파악이 안되어서
깃허브가서 확인해보니 2.대 버전 이후 사용법의 변화가 많았음 그래서 다시  라이브러리를 2.5로 내리고 컴파일해서 업로드하니 예전과 같이 결과가 잘나옴
ide 2.2에서는 라이브러리 자동 업데이트가 있는데 이걸 사용할경우 모든 라이브러리를 최신으로 바꾸다 보니 이런일이 생겨버린것임..
라이브러리 호환성을 이렇게 무시할줄은 생각도 못함 앞으로는 소스에 라이브러리 버전도 표시해서 관리해야 할듯.

if (ir.decode(&result)){
serial.print(result.vale);
}

https://github.com/Arduino-IRremote/Arduino-IRremote#converting-your-2x-program-to-the-4x-version

GitHub - Arduino-IRremote/Arduino-IRremote: Infrared remote library for Arduino: send and receive infrared signals with multiple

Infrared remote library for Arduino: send and receive infrared signals with multiple protocols - GitHub - Arduino-IRremote/Arduino-IRremote: Infrared remote library for Arduino: send and receive in...

github.com

Example
Old 2.x program:

#include <IRremote.h>
#define RECV_PIN 2

IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()
{
...
  irrecv.enableIRIn(); // Start the receiver
}

void loop() {
  if (irrecv.decode(&results)) {
      Serial.println(results.value, HEX);
      ...
      irrecv.resume(); // Receive the next value
  }
  ...
}

New 4.x program:

#include <IRremote.hpp>
#define IR_RECEIVE_PIN 2

void setup()
{
...
  IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK); // Start the receiver
}

void loop() {
  if (IrReceiver.decode()) {
      Serial.println(IrReceiver.decodedIRData.decodedRawData, HEX); // Print "old" raw data
      // USE NEW 3.x FUNCTIONS
      IrReceiver.printIRResultShort(&Serial); // Print complete received data in one line
      IrReceiver.printIRSendUsage(&Serial);   // Print the statement required to send this data
      ...
      IrReceiver.resume(); // Enable receiving of the next value
  }
  ...
}