极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 16038|回复: 7

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

[复制链接]
发表于 2014-10-25 12:43:40 | 显示全部楼层 |阅读模式
比如说点一下LED亮,再点一下LED灭。。。{:soso_e109:}
回复

使用道具 举报

发表于 2014-10-25 13:10:54 | 显示全部楼层
同一个LED可以在程序中取反就可以了,即端口现在1收到红外后就置0,反之亦反。
回复 支持 反对

使用道具 举报

发表于 2014-10-25 14:00:24 | 显示全部楼层
双击或长按
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-26 09:52:37 | 显示全部楼层
davidce 发表于 2014-10-25 14:00
双击或长按

长按后返回编码是FFFFFF
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-26 09:56:59 | 显示全部楼层
林定祥 发表于 2014-10-25 13:10
同一个LED可以在程序中取反就可以了,即端口现在1收到红外后就置0,反之亦反。

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

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

IRrecv irrecv(irReceiverPin); // 设置irReceiverPin定义的端口为红外信号接收端口
decode_results results;    // 定义results变量为红外结果存放位置
int  LED1=6;
int  s=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
#include   // 使用IRRemote函数库

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

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

使用道具 举报

 楼主| 发表于 2014-10-28 08:44:57 | 显示全部楼层
林定祥 发表于 2014-10-27 15:43
为什么会这么复杂啊,亮和不亮只有两个状态.因此初始S=0,判断到有红外S=S非,送端口就可以了。

明白了。。。谢了
回复 支持 反对

使用道具 举报

发表于 2014-10-29 22:43:35 | 显示全部楼层
一楼正解 你在函数中LED1=!LED;即可   我不知道是不是,我学zigbee的
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-9 04:06 , Processed in 0.036995 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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