极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10669|回复: 2

请教,红外遥控器连续输入一组按键的问题

[复制链接]
发表于 2013-8-10 23:18:33 | 显示全部楼层 |阅读模式
把问题简单化:

我想用遥控器控制一个led,但需要输入2个以上的按键控制,如依次输入1,2,3,4点亮led。

我的思路是 定义一个标记值 int k = 0;

k == 0情况下,按1后, k = 1;
k == 1情况下,按2后, k = 2;
k == 2情况下,按3后, k = 3;
k == 3情况下,按4后, k = 4;同时点亮led。

如果不按顺序按键,或按其他键,则赋值 k = 0;

这种方法可行,但似乎有点麻烦,请大神指点,有没有什么简便的方式。

另外想请教,那种简单的遥控器没有中断功能,即经常出现ffffffff代码,不知如何避免。(个人的想法还是使用判断语句,如果收到的代码不是遥控器所拥有的正确代码,那么程序所有参数及功能保持不变。)

(献个丑。分享一下这个功能的idea。是用在智能家居的闹钟部分,只有正确输入一组按键才能完全停止闹钟,否则进入延时再响模式。不知道大家有没有更好的闹钟的idea分享。)

谢!
回复

使用道具 举报

发表于 2013-8-11 10:02:05 | 显示全部楼层
  1. unsigned long keytable[]= {0xaafd01,0xaafd02,0xaafd03,0xaafd04};
  2. int k=0;

  3. if (keytable[k++] == 收到的键值)
  4. {
  5.         if (sizeof(keytable)/sizeof(unsigned long) == k)
  6.         {
  7.                 //处理
  8.         }
  9. }
  10. else
  11. {
  12.         k = 0;
  13. }
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-12 00:12:19 | 显示全部楼层
pathletboy 发表于 2013-8-11 10:02

学习了。 谢!
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-8 08:55 , Processed in 0.035920 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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