实物图
代码部分: - //电路图同红外接收同时发光二极管闪烁
- //本例来自于红外接收模块的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
- * [url]http://arcfn.com[/url]
- */
- #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+也不会灯亮.
如果蜂鸣器响声结束后,再按其它键不会有任何反应.
|