极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10053|回复: 3

新人红外遥控求助

[复制链接]
发表于 2015-2-23 09:27:27 | 显示全部楼层 |阅读模式
本帖最后由 Veezki 于 2015-2-23 16:45 编辑
  1. #include <IRremote.h>
  2. const int irReceiverPin = 11;  // 定义irReceiverPin变量为PIN11接口
  3. IRrecv irrecv(irReceiverPin); // 设置irReceiverPin定义的端口为红外信号接收端口
  4. decode_results results;    // 定义results变量为红外结果存放位置
  5. boolean StateB=false;

  6. void BUTTON(){
  7. if (irrecv.decode(&results)) {
  8. switch (results.value) {
  9.     case 0xFFC23D :                //按下按钮A
  10.             Serial.println("A");
  11.       break;
  12.     case 0xFFE01F:                //按下按钮B
  13.      StateB = !StateB ;
  14.       break;}
  15.       irrecv.resume();    // 继续等待接收下一组信号
  16.                                   }
  17.           delay(600);
  18.                   }
  19. void setup()
  20. {
  21.         Serial.begin(9600);       
  22.         irrecv.enableIRIn();   // 启动红外解码
  23. }

  24. void loop()
  25. {
  26.         delay(600);
  27.         void BUTTON();

  28.         if(StateB){
  29.                 Serial.println("ON");
  30.         }
  31.         else{Serial.println("OFF");}
  32. }
  33. //-------------------------------------------------------------------------------------
复制代码
实际操作的时候串口监视器只输出了OFF……
遥控器和接收器已经头碰头了怎么破{:soso_e105:}
回复

使用道具 举报

 楼主| 发表于 2015-2-23 09:29:11 | 显示全部楼层
  1. #include <IRremote.h>
  2. const int irReceiverPin = 11;  // 定义irReceiverPin变量为PIN11接口
  3. IRrecv irrecv(irReceiverPin); // 设置irReceiverPin定义的端口为红外信号接收端口
  4. decode_results results;    // 定义results变量为红外结果存放位置
  5. boolean StateB=false;

  6. // void BUTTON(){
  7. // if (irrecv.decode(&results)) {
  8. // switch (results.value) {
  9. //     case 0xFFC23D :                //按下按钮A
  10. //             Serial.println("A");
  11. //       break;
  12. //     case 0xFFE01F:                //按下按钮B
  13. //      StateB = !StateB ;
  14. //       break;}
  15. //       irrecv.resume();    // 继续等待接收下一组信号
  16. //                                   }
  17. //           delay(600);
  18. //                   }
  19. void setup()
  20. {
  21.         Serial.begin(9600);       
  22.         irrecv.enableIRIn();   // 启动红外解码
  23. }
  24. void loop()
  25. {
  26.         // delay(600);
  27.         // void BUTTON();
  28.         if (irrecv.decode(&results)) {
  29. switch (results.value) {
  30.     case 0xFFC23D :                //按下按钮A
  31.             Serial.println("A");
  32.       break;
  33.     case 0xFFE01F:                //按下按钮B
  34.      StateB = !StateB ;
  35.       break;}
  36.       irrecv.resume();    // 继续等待接收下一组信号
  37.                                   }
  38.           delay(600);

  39.         if(StateB){
  40.                 Serial.println("ON");
  41.         }
  42.         else{Serial.println("OFF");}
  43. }
  44. //-------------------------------------------------------------------------------------
  45.          
复制代码
这样却又可以实现,那之前那个错在哪里呢?
回复 支持 反对

使用道具 举报

发表于 2015-2-23 10:49:49 | 显示全部楼层
loop是不停循环的,显示ON的时候,你没来及看,就继续刷新成OFF了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-2-23 16:44:58 | 显示全部楼层
瘦网虫 发表于 2015-2-23 10:49
loop是不停循环的,显示ON的时候,你没来及看,就继续刷新成OFF了。

……这个问题我已经解决了,是loop里面BUTTON()外面那个void不用写
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-10 12:29 , Processed in 0.034676 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表