利用红外遥控器
for循环中(if(mode==3)内部的)和for循环外部(loop函数刚开始的那里)两次接收红外线信号并把解码结果放在results里,每次都打印出results里的值;从串口监视器发现外部信号是固定的,但是for循环内部接收到的红外信号每次都是随机的,这是为什么?
#include <IRremote.h>
int recv = 11;
int mode=0;
int tonepin=6;
int mode2=0;
IRrecv irrecv(recv);
decode_results results;
void setup() {
Serial.begin(9600);
irrecv.enableIRIn(); // 初始化红外接收器
pinMode(tonepin,OUTPUT);
}
void loop() {
aaa:
Serial.print("外:") ;
Serial.print(mode);
Serial.println(results.value,HEX);
if (irrecv.decode(&results)) {
switch(results.value){
case 0xFF30CF:mode=1;break;
case 0xFF18E7:mode=2;break;
case 0xFF7A85:mode=3;break;
}
irrecv.resume(); // 接收下一次红外线信号
}
if(mode==3){
for(int i=0;i<=10000;i++){
if (irrecv.decode(&results)) {//检测模式
Serial.println(results.value,HEX);
irrecv.resume(); // 接收下一次红外线信号
goto aaa;
}
tone(tonepin,300);
delay(1000);
noTone(tonepin);
}
}
}