功能提示音和 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
我正在尝试使用 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