Veezki 发表于 2015-2-23 09:27:27

新人红外遥控求助

本帖最后由 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:}

Veezki 发表于 2015-2-23 09:29:11

#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");}
}
//-------------------------------------------------------------------------------------
       这样却又可以实现,那之前那个错在哪里呢?

瘦网虫 发表于 2015-2-23 10:49:49

loop是不停循环的,显示ON的时候,你没来及看,就继续刷新成OFF了。

Veezki 发表于 2015-2-23 16:44:58

瘦网虫 发表于 2015-2-23 10:49 static/image/common/back.gif
loop是不停循环的,显示ON的时候,你没来及看,就继续刷新成OFF了。

……这个问题我已经解决了,是loop里面BUTTON()外面那个void不用写:L
页: [1]
查看完整版本: 新人红外遥控求助