D骷髅殇 发表于 2014-10-25 12:43:40

求教。。怎么让红外遥控一个按键实现两个功能

比如说点一下LED亮,再点一下LED灭。。。{:soso_e109:}

林定祥 发表于 2014-10-25 13:10:54

同一个LED可以在程序中取反就可以了,即端口现在1收到红外后就置0,反之亦反。

davidce 发表于 2014-10-25 14:00:24

双击或长按

D骷髅殇 发表于 2014-10-26 09:52:37

davidce 发表于 2014-10-25 14:00 static/image/common/back.gif
双击或长按

长按后返回编码是FFFFFF

D骷髅殇 发表于 2014-10-26 09:56:59

林定祥 发表于 2014-10-25 13:10 static/image/common/back.gif
同一个LED可以在程序中取反就可以了,即端口现在1收到红外后就置0,反之亦反。

#include <IRremote.h>// 使用IRRemote函数库

const int irReceiverPin = 2;// 红外接收器的 OUTPUT 引脚接在 PIN2 接口 定义irReceiverPin变量为PIN2接口

IRrecv irrecv(irReceiverPin); // 设置irReceiverPin定义的端口为红外信号接收端口
decode_results results;    // 定义results变量为红外结果存放位置
intLED1=6;
ints=0;
void setup()
{
Serial.begin(9600);   // 开启串口,波特率为9600
irrecv.enableIRIn();   // 启动红外解码
pinMode(6,OUTPUT);

}
void loop()
{
if (irrecv.decode(&results)) {   // 解码成功,把数据放入results变量中
    // 把数据输入到串口
               if(s>=2);{
   digitalWrite(LED1,LOW);
   s=0;
}
    Serial.println(results.value); // 显示红外编码
    if(s<2&&results.value==0xFF30CF)
    {
      s=s+1;
   digitalWrite(LED1,HIGH);

   }
    }
irrecv.resume();    // 继续等待接收下一组信号
   
delay(600); //延时600毫秒,做一个简单的消抖
}
控制累计无法实现嘛?

林定祥 发表于 2014-10-27 15:43:49

D骷髅殇 发表于 2014-10-26 09:56 static/image/common/back.gif
#include   // 使用IRRemote函数库

const int irReceiverPin = 2;// 红外接收器的 OUTPUT 引脚接在 ...

为什么会这么复杂啊,亮和不亮只有两个状态.因此初始S=0,判断到有红外S=S非,送端口就可以了。

D骷髅殇 发表于 2014-10-28 08:44:57

林定祥 发表于 2014-10-27 15:43 static/image/common/back.gif
为什么会这么复杂啊,亮和不亮只有两个状态.因此初始S=0,判断到有红外S=S非,送端口就可以了。

明白了。。。谢了:handshake

ZIGBEE菜鸟 发表于 2014-10-29 22:43:35

一楼正解 你在函数中LED1=!LED;即可   我不知道是不是,我学zigbee的
页: [1]
查看完整版本: 求教。。怎么让红外遥控一个按键实现两个功能