#include "IRremote.h"
int receiver = 11;
IRrecv irReceiver(receiver);
decode_results results;
void setup() {
// put your setup code here, to run once:
pinMode(buttonPinA, INPUT_PULLUP);
pinMode(buttonPinB, INPUT_PULLUP);
pinMode(buttonPinC, INPUT_PULLUP);
pinMode(buttonPinD, INPUT_PULLUP);
irReceiver.enableIRIn();
}
错误消息是:
Tone.cpp.o(插件的符号):在函数“ timer0_pin_port”中:
(。text + 0x0):“ __ vector_13”的多个定义
libraries \ IRremote \ IRremote.cpp.o(插件的符号):(。text + 0x0): 首先在这里定义
c:/程序文件 (x86)/ arduino / hardware / tools / avr / bin /../ lib / gcc / avr / 4.9.2 /../../../../ avr / bin / ld.exe: 禁用松弛:不适用于多个定义
collect2.exe:错误:ld返回1个退出状态
退出状态1 为板Arduino / Genuino Mega或Mega编译时出错 2560。
我最近发现“ tone”和“ IRremote”命令使用here中的timer2。我不知道什么是timer2以及如何更改它。
答案 0 :(得分:0)
此错误是链接问题。两段库代码都声明了具有相同名称的内容(在这种情况下,这是一个计时器)。
所以编译就可以了,现在链接程序将已编译的输出打包到可执行文件中。每次您看到诸如error: ld returned ...
之类的错误消息时,都知道这是链接问题,而不是语法问题。 ld
是链接程序(“ ld”是链接程序的名称)。
如此处所述:
https://forum.arduino.cc/index.php?topic=120955.msg2613823#msg2613823
编辑头文件IRRemote.h并更改库使用的计时器中断:
更改选择:
#define IR_USE_TIMER1 // tx = pin 9
// #define IR_USE_TIMER2 // tx = pin 3
例如:
// #define IR_USE_TIMER1 // tx = pin 9
#define IR_USE_TIMER2 // tx = pin 3