Skip to content

esp32 C6,无法使用IRremote红外库 #11762

@ayyildiz12

Description

@ayyildiz12

Board

esp32c6 DEV module

Device Description

下面是我的代码,我使用的esp8266库是2.6版本的,换其他版本也无法编译,
#include "USB.h" //串口通信库
#include "USBCDC.h"
#include <Arduino.h>
#include <IRremoteESP8266.h>
#include <IRrecv.h>
#include <IRutils.h>

// 定义红外接收引脚
const int RECV_PIN = 0; // ESP32的GPIO 0引脚

IRrecv irrecv(RECV_PIN);
decode_results results;

void setup() {
Serial.begin(9600);
Serial.setDebugOutput(true);
irrecv.enableIRIn();
Serial.printf("initial success...");
}

void loop() {
if (irrecv.decode(&results)) {
// Serial.printf(results.value, HEX);
Serial.printf("Received: %x \r\n", results.value);
irrecv.resume();
}

// Serial.printf("USB CDC Data");
// delay(100);
}

Hardware Configuration

没有

Version

v3.2.0

Type

Task

IDE Name

arduino ide

Operating System

window

Flash frequency

80mhz

PSRAM enabled

yes

Upload speed

9600

Description

我想用IRremote红外库,进行红外开发,但是编译上面的程序一直报错,库版本不兼容,我不知道什么版本的库出了问题,您能帮助我把上面的程序编译好吗?

Sketch

#include "USB.h"  //串口通信库
#include "USBCDC.h"
#include <Arduino.h>
#include <IRremoteESP8266.h>
#include <IRrecv.h>
#include <IRutils.h>

// 定义红外接收引脚
const int RECV_PIN = 0; // ESP32的GPIO 0引脚

IRrecv irrecv(RECV_PIN);
decode_results results;

void setup() {
  Serial.begin(9600);
  Serial.setDebugOutput(true);
  irrecv.enableIRIn();
  Serial.printf("initial success...");
}

void loop() {
  if (irrecv.decode(&results)) {
    // Serial.printf(results.value, HEX);
    Serial.printf("Received: %x \r\n", results.value);
    irrecv.resume();
  }
  

  //  Serial.printf("USB CDC Data"); 
  //  delay(100);
}

Debug Message

c:\Users\liu\Documents\Arduino\libraries\IRremoteESP8266\src\IRrecv.cpp: In function 'void gpio_intr()':
c:\Users\liu\Documents\Arduino\libraries\IRremoteESP8266\src\IRrecv.cpp:246:3: error: 'timerAlarmEnable' was not declared in this scope; did you mean 'timerAlarm'?
  246 |   timerAlarmEnable(timer);
      |   ^~~~~~~~~~~~~~~~
      |   timerAlarm
c:\Users\liu\Documents\Arduino\libraries\IRremoteESP8266\src\IRrecv.cpp: In member function 'void IRrecv::enableIRIn(bool)':
c:\Users\liu\Documents\Arduino\libraries\IRremoteESP8266\src\IRrecv.cpp:362:21: error: too many arguments to function 'hw_timer_t* timerBegin(uint32_t)'
  362 |   timer = timerBegin(_timer_num, 80, true);
      |           ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\liu\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.2\cores\esp32/esp32-hal.h:84,
                 from C:\Users\liu\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.2\cores\esp32/Arduino.h:36,
                 from c:\Users\liu\Documents\Arduino\libraries\IRremoteESP8266\src\IRrecv.h:10,
                 from c:\Users\liu\Documents\Arduino\libraries\IRremoteESP8266\src\IRrecv.cpp:6:
C:\Users\liu\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.2\cores\esp32/esp32-hal-timer.h:35:13: note: declared here
   35 | hw_timer_t *timerBegin(uint32_t frequency);
      |             ^~~~~~~~~~
c:\Users\liu\Documents\Arduino\libraries\IRremoteESP8266\src\IRrecv.cpp:371:3: error: 'timerAlarmWrite' was not declared in this scope; did you mean 'timerWrite'?
  371 |   timerAlarmWrite(timer, MS_TO_USEC(params.timeout), ONCE);
      |   ^~~~~~~~~~~~~~~
      |   timerWrite
c:\Users\liu\Documents\Arduino\libraries\IRremoteESP8266\src\IRrecv.cpp:375:23: error: too many arguments to function 'void timerAttachInterrupt(hw_timer_t*, void (*)())'
  375 |   timerAttachInterrupt(timer, &read_timeout, false);
      |   ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:\Users\liu\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.2\cores\esp32/esp32-hal-timer.h:50:6: note: declared here
   50 | void timerAttachInterrupt(hw_timer_t *timer, void (*userFunc)(void));
      |      ^~~~~~~~~~~~~~~~~~~~
c:\Users\liu\Documents\Arduino\libraries\IRremoteESP8266\src\IRrecv.cpp: In member function 'void IRrecv::disableIRIn()':
c:\Users\liu\Documents\Arduino\libraries\IRremoteESP8266\src\IRrecv.cpp:401:3: error: 'timerAlarmDisable' was not declared in this scope
  401 |   timerAlarmDisable(timer);
      |   ^~~~~~~~~~~~~~~~~
c:\Users\liu\Documents\Arduino\libraries\IRremoteESP8266\src\IRrecv.cpp: In member function 'void IRrecv::pause()':
c:\Users\liu\Documents\Arduino\libraries\IRremoteESP8266\src\IRrecv.cpp:416:3: error: 'gpio_intr_disable' was not declared in this scope; did you mean 'esp_intr_disable'?
  416 |   gpio_intr_disable((gpio_num_t)params.recvpin);
      |   ^~~~~~~~~~~~~~~~~
      |   esp_intr_disable
c:\Users\liu\Documents\Arduino\libraries\IRremoteESP8266\src\IRrecv.cpp: In member function 'void IRrecv::resume()':
c:\Users\liu\Documents\Arduino\libraries\IRremoteESP8266\src\IRrecv.cpp:429:3: error: 'timerAlarmDisable' was not declared in this scope
  429 |   timerAlarmDisable(timer);
      |   ^~~~~~~~~~~~~~~~~
c:\Users\liu\Documents\Arduino\libraries\IRremoteESP8266\src\IRrecv.cpp:430:3: error: 'gpio_intr_enable' was not declared in this scope; did you mean 'esp_intr_enable'?
  430 |   gpio_intr_enable((gpio_num_t)params.recvpin);
      |   ^~~~~~~~~~~~~~~~
      |   esp_intr_enable
exit status 1

Compilation error: exit status 1

Other Steps to Reproduce

没有了

I have checked existing issues, online documentation and the Troubleshooting Guide

  • I confirm I have checked existing issues, online documentation and Troubleshooting guide.

Metadata

Metadata

Assignees

No one assigned

    Labels

    3.0 migrationIssue relates to migration from 2.X to 3.X versionType: QuestionOnly question

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions