新人红外遥控求助
本帖最后由 Veezki 于 2015-2-23 16:45 编辑#include <IRremote.h>
const int irReceiverPin = 11;// 定义irReceiverPin变量为PIN11接口
IRrecv irrecv(irReceiverPin); // 设置irReceiverPin定义的端口为红外信号接收端口
decode_results results; // 定义results变量为红外结果存放位置
boolean StateB=false;
void BUTTON(){
if (irrecv.decode(&results)) {
switch (results.value) {
case 0xFFC23D : //按下按钮A
Serial.println("A");
break;
case 0xFFE01F: //按下按钮B
StateB = !StateB ;
break;}
irrecv.resume(); // 继续等待接收下一组信号
}
delay(600);
}
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // 启动红外解码
}
void loop()
{
delay(600);
void BUTTON();
if(StateB){
Serial.println("ON");
}
else{Serial.println("OFF");}
}
//-------------------------------------------------------------------------------------实际操作的时候串口监视器只输出了OFF……
遥控器和接收器已经头碰头了怎么破{:soso_e105:} #include <IRremote.h>
const int irReceiverPin = 11;// 定义irReceiverPin变量为PIN11接口
IRrecv irrecv(irReceiverPin); // 设置irReceiverPin定义的端口为红外信号接收端口
decode_results results; // 定义results变量为红外结果存放位置
boolean StateB=false;
// void BUTTON(){
// if (irrecv.decode(&results)) {
// switch (results.value) {
// case 0xFFC23D : //按下按钮A
// Serial.println("A");
// break;
// case 0xFFE01F: //按下按钮B
// StateB = !StateB ;
// break;}
// irrecv.resume(); // 继续等待接收下一组信号
// }
// delay(600);
// }
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // 启动红外解码
}
void loop()
{
// delay(600);
// void BUTTON();
if (irrecv.decode(&results)) {
switch (results.value) {
case 0xFFC23D : //按下按钮A
Serial.println("A");
break;
case 0xFFE01F: //按下按钮B
StateB = !StateB ;
break;}
irrecv.resume(); // 继续等待接收下一组信号
}
delay(600);
if(StateB){
Serial.println("ON");
}
else{Serial.println("OFF");}
}
//-------------------------------------------------------------------------------------
这样却又可以实现,那之前那个错在哪里呢? loop是不停循环的,显示ON的时候,你没来及看,就继续刷新成OFF了。 瘦网虫 发表于 2015-2-23 10:49 static/image/common/back.gif
loop是不停循环的,显示ON的时候,你没来及看,就继续刷新成OFF了。
……这个问题我已经解决了,是loop里面BUTTON()外面那个void不用写:L
页:
[1]