功能提示音和 IRremote

Function tone and IRremote

我正在尝试使用 IR 记录器和扬声器创建一个程序。 目标是在我触摸遥控器上的数字时播放音符,但我遇到了问题。 我在看代码,问题出在功能音上,但我不知道为什么。

问题: Tone.cpp.o(来自插件的符号):在函数“timer0_pin_port”中:

(.text+0x0): `__vector_7'

的多重定义

libraries\IRremote\IRremote.cpp.o (来自插件的符号):(.text+0x0): 首先在这里定义

collect2.exe:错误:ld 返回 1 退出状态

退出状态 1

#include "IRremote.h"

int pinLED = 7;
int pinIR = 11;
int speaker = 9;

IRrecv receptor (pinIR);
decode_results resultados;

//NOTES
long DO= 523.25;
long RE=587.33;
long MI=659.26;
long FA=698.46;
long SOL=783.99;
long LA=880;
long SI=987.77;
long DoS=554.37;


void decodificar(){

  switch(resultados.value){
    case 0xFFA25D: //POWER
      if (digitalRead(pinLED)==LOW){
        digitalWrite(pinLED, HIGH);
      }else{
        digitalWrite(pinLED, LOW);
      }
      break;

    if (digitalRead(pinLED)==HIGH){
       case 0xFF30CF: //Num 1
        tone (speaker, DO, 200);
        break;
      case 0xFF18E7: //Num 2
        tone (speaker, RE, 200);
        break;
      case 0xFF7A85: //Num 3
        tone (speaker, MI, 200);
        break;
      case 0xFF10EF: //Num 4
        tone (speaker, FA, 200);
        break;
      case 0xFF38C7: //Num 5
        tone (speaker, SOL), 200; 
        break;
      case 0xFF5AA5: //Num 6
        tone (speaker, LA, 200);
        break;
      case 0xFF42BD: //Num 7
        tone (speaker, SI, 200);
        break;
      case 0xFF4AB5: //Num 8
        tone (speaker, DoS, 200);
        break;
    }
   
  }
}

void setup() {
  pinMode (pinLED, OUTPUT);
  pinMode (speaker, OUTPUT);
  receptor.enableIRIn();
}

void loop() {

  if (receptor.decode(&resultados)){
    decodificar();
    receptor.resume();
  }
}

您可以为

中的 IRRemote 库使用不同的计时器

Arduino\libraries\IRremote\boarddefs.h

通过更改第 190 行周围的注释

#else
// Arduino Duemilanove, Diecimila, LilyPad, Mini, Fio, Nano, etc
// ATmega48, ATmega88, ATmega168, ATmega328
    #define IR_USE_TIMER1   // tx = pin 9
    //#define IR_USE_TIMER2     // tx = pin 3

对我(使用 Nano)来说,这至少消除了链接器错误。 HTH