tom 发表于 2012-10-28 20:22:31

红外遥控接收之二发光二极管闪烁

红外遥控接收之二发光二极管闪烁
在上次的基础上追加了一个发光二极管,当遥控器有按下按键时发光二极管闪烁.



实物图片


//本例来自于红外接收模块的IRremote自带范例
//已经作出了修改
//改为当有遥控器的按键按下时,接在数字引脚4上的发光LED就会闪烁0.1秒
/*电路连接
*红外接收器的VOUT接在数字引脚11上,GND接控制板的GND,VCC接控制板上+5V
*发光二极管引脚接在数字引脚4上,通过220欧姆电阻回到控制板的GND
*效果,当遥控器按下按键时,发光二极管就会闪烁,同时电脑的串口会出现按键的命令编码.
*/
/*
* IRremote: IRrecvDemo - demonstrates receiving IR codes with IRrecv
* An IR detector/demodulator must be connected to the input RECV_PIN.
* Version 0.1 July, 2009
* Copyright 2009 Ken Shirriff
* http://arcfn.com
*/

#include <IRremote.h>

int RECV_PIN = 11;//定义红外接收器的引脚为11
int LED_PIN=4;//定义发光LED引脚数字4
IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // 初始化红外接收器
pinMode(LED_PIN,OUTPUT);//设置发光LED引脚数字4
}

void loop() {
if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);//以16进制换行输出接收代码
    Serial.println();//为了便于观看输出结果增加一个空行
    digitalWrite(LED_PIN,HIGH);//LED点亮
    delay(10);
    digitalWrite(LED_PIN,LOW);//LED熄灭
    irrecv.resume(); // 接收下一个值
}
}


运行效果:
按下遥控器按键时,发光二极管闪烁.
打开串口监视器,串口监视器中输出相应的按键的代码.

把代码修改一下,尝试用数字1点亮LED,数字2关闭LED.

代码如下:


//本例来自于红外接收模块的IRremote自带范例
//已经作出了修改

/*电路连接
*红外接收器的VOUT接在数字引脚11上,GND接控制板的GND,VCC接控制板上+5V
*发光二极管引脚接在数字引脚4上,通过220欧姆电阻回到控制板的GND
*效果,按键1点亮LED,按键2关闭LED.
*/
/*
* IRremote: IRrecvDemo - demonstrates receiving IR codes with IRrecv
* An IR detector/demodulator must be connected to the input RECV_PIN.
* Version 0.1 July, 2009
* Copyright 2009 Ken Shirriff
* http://arcfn.com
*/

#include <IRremote.h>

int RECV_PIN = 11;//定义红外接收器的引脚为11
int LED_PIN=4;//定义发光LED引脚数字4
IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // 初始化红外接收器
pinMode(LED_PIN,OUTPUT);//设置发光LED引脚数字4
}

void loop() {
if (irrecv.decode(&results))
{
    if (results.value==16724175)//确认接收到的第一排按键1的编码,此码是预先读出来的按键编码。
    {
    Serial.println(results.value, HEX);//以16进制换行输出接收代码
    Serial.println();//为了便于观看输出结果增加一个空行
   
    digitalWrite(LED_PIN,HIGH);//LED点亮
    Serial.println("点亮发光二极管tun on LED: "); //串口显示开灯

    }
    else if (results.value==16718055)//确认接收到的第一排按键2的编码,此码是预先读出来的按键编码。
    {
      
   
    digitalWrite(LED_PIN,LOW);//LED熄灭
    Serial.println(results.value, HEX);//以16进制换行输出接收代码
    Serial.println();//为了便于观看输出结果增加一个空行
    Serial.println("关发光二极管tun off LED: "); //串口显示关灯

    }
    irrecv.resume(); // 接收下一个值
}
}

运行效果图

望奎信息网 发表于 2013-10-2 16:03:23

为什么按同样 一个键有时候返回码不一样呢?

太行摄狼 发表于 2012-10-30 07:52:08

学习红外,不错

wsy0315 发表于 2013-1-31 20:48:40

本帖最后由 wsy0315 于 2013-1-31 21:13 编辑

按照你说的,我做了,但是我把编码换成了 “33B8609F” 的时候,显示不能编译

//本例来自于红外接收模块的IRremote自带范例

//已经作出了修改

/*电路连接

*红外接收器的VOUT接在数字引脚11上,GND接控制板的GND,VCC接控制板上+5V

*发光二极管引脚接在数字引脚4上,通过220欧姆电阻回到控制板的GND

*效果,按键1点亮LED,按键2关闭LED.

*/



#include <IRremote.h>
int RECV_PIN = 11;//定义红外接收器的引脚为11
int LED_PIN = 4; //定义发光LED引脚数字4
IRrecv irrecv(RECV_PIN);
decode_results results;


void setup()
{
    Serial.begin(9600);
    irrecv.enableIRIn(); // 初始化红外接收器
    pinMode(LED_PIN, OUTPUT); //设置发光LED引脚数字4
}

void loop()
{
if (irrecv.decode(&results))
    {
      if (results.value == 33B8609F) //确认接收到的第一排按键1的编码,此码是预先读出来的按键编码。
      {
            Serial.println(results.value, HEX);//以16进制换行输出接收代码
            Serial.println();//为了便于观看输出结果增加一个空行
            digitalWrite(LED_PIN, HIGH); //LED点亮
            Serial.println("点亮发光二极管tun on LED: "); //串口显示开灯
      }
      else if (results.value == 33B8A05F) //确认接收到的第一排按键2的编码,此码是预先读出来的按键编码。
      {
            digitalWrite(LED_PIN, LOW); //LED熄灭
            Serial.println(results.value, HEX);//以16进制换行输出接收代码
            Serial.println();//为了便于观看输出结果增加一个空行
            Serial.println("关发光二极管tun off LED: "); //串口显示关灯
      }
      irrecv.resume(); // 接收下一个值
    }
}

tom 发表于 2013-2-1 00:36:07

       if (results.value == 33B8609F) //确认接收到的第一排按键1的编码,此码是预先读出来的按键编码。

换成
       if (results.value ==0x33B8609F)   试试,这个我没有测试过。

xuwenhua625 发表于 2014-5-6 17:10:26

请问,如果同时需要用4个红外接收头,程序该怎么写?这样可以吗?

huangyunfa 发表于 2014-11-1 17:01:08

xuwenhua625 发表于 2014-5-6 17:10 static/image/common/back.gif
请问,如果同时需要用4个红外接收头,程序该怎么写?这样可以吗?

:lol:lol,期待啊。

我的五彩弦 发表于 2015-4-19 20:59:08

请问那个十六进制数怎样得到的
页: [1]
查看完整版本: 红外遥控接收之二发光二极管闪烁