tom 发表于 2012-10-28 20:28:06

红外遥控接收之三红外遥控接收LED与蜂鸣器



实物图




代码部分:

//电路图同红外接收同时发光二极管闪烁

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

/*电路连接
*红外接收器的VOUT接在数字引脚11上,GND接控制板的GND,VCC接控制板上+5V
*蜂鸣器接在数字针口6
*发光二极管引脚接在数字引脚4上,通过220欧姆电阻回到控制板的GND
*效果,当遥控器按下停止键时,VOL1+发光二极管就会闪烁,VOL-蜂鸣器的响声.

*/
/*
* 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>

#define BUZZER 6


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
pinMode(BUZZER,OUTPUT);//设置蜂鸣器
}

void loop() {

if (irrecv.decode(&results))
{
    switch (results.value)


    {

    case 16761405: //停止
      digitalWrite(LED_PIN,LOW);//红灯不亮
      digitalWrite(BUZZER,LOW);//蜂鸣器不响
      break;
    case 16754775://VOL1+
      digitalWrite(LED_PIN,HIGH);//红灯亮
      break;
    case 16769055://VOL-
      digitalWrite(BUZZER,HIGH);//蜂鸣器响
      for(int i=200;i<=800;i++)      
      //用循环的方式将频率从200HZ 增加到800HZ
      {
      tone(4,i);                            //在四号端口输出频率
      delay(5);                              //该频率维持5毫秒
      }
      delay(2000);
      for(int i=800;i>=200;i--)
      {

      tone(BUZZER,i);
      delay(10);
      }
      break;
    }

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




后记:
(也许是没有使用中断的原因)

当按下VOL-键时,蜂鸣器响个不停.但此时,若按下VOL+键则.再按VOL-则不会有响声,按VOL+也不会灯亮.

如果蜂鸣器响声结束后,再按其它键不会有任何反应.

小黑 发表于 2012-10-28 21:49:05

不错的东东啊

tgyfish 发表于 2012-10-28 23:00:36

好!!!!!!!

迷你强 发表于 2012-10-29 21:07:25

:o貌似超给力

kenblue 发表于 2012-12-24 20:58:12

为什么要在4号口用TONE命令呢?

huagong0002 发表于 2015-3-3 17:46:58

好东西,学习一下了

mingzhi080218 发表于 2015-6-25 13:38:52

不错,学习了!
页: [1]
查看完整版本: 红外遥控接收之三红外遥控接收LED与蜂鸣器