arduino红外控制led(发射与接收)



arduino红外控制led(发射与接收)论坛上有关红外接收的帖子不少,但是关于使用arduino自制红外发射器的帖子却很少,经过网上搜索和自己摸索,给大家发个有arduino自制红外发射器控制led亮灭的例子。关于本例我使用了两块arduino板,一块用于发射,一块用于接收。一、红外发射(开发板一)

<ignore_js_op>

[C] 纯文本查看 复制代码
代码
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
/*
* 发射红外线讯号
*     注意! 红外线发射器(IR LED)必须接到 pin 3, 不能接其它脚位,头文件已经定义,所以下面不用设置pin3口的状态
*/
#include <IRremote.h>                  // 引用 IRRemote 函式库
                            
const int buttonPin = 4;                 // 按键(pushbutton)接在 pin 4
int buttonState = 0;                     // 按键状态
                            
IRsend irsend;                          // 定义 IRsend 物件来发射红外线讯号
                            
void setup()
{
pinMode(buttonPin, INPUT);             // 把 buttonPin 设置成 输入
}
                            
void loop()
{
// 读取按键状态
buttonState = digitalRead(buttonPin);
                            
// 检查按键是否被按下
// 有的话 buttonState 会是高电平输出
if (buttonState == HIGH) {
// 发射红外线讯号
irsend.sendNEC(0x4CB3817E, 32);   // 这个编码即你按的键(接pin4)的编码,可以随意更改,如果要控制其他设备,只需将此编码改为相应编码就行
}
}

将以上程序烧入开发板一中,发射部分就制作完毕。下面是红外接收部分。

二、红外接收(开发板二)
<ignore_js_op>

[C] 纯文本查看 复制代码
代码
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
//本例来自于红外接收模块的IRremote自带范例
//已经作出了修改
//改为当有遥控器的按键按下时,接在数字引脚4上的发光LED就会点亮,再按一下按键,led熄灭
/*电路连接
 *红外接收器的VOUT接在数字引脚11上,GND接控制板的GND,VCC接控制板上+5V
*发光二极管引脚接在数字引脚4上,通过220欧姆电阻回到控制板的GND
*效果,当遥控器按下按键时,发光二极管就会闪烁,同时电脑的串口会出现按键的命令编码.
*/
 
#include <IRremote.h>
 
int RECV_PIN = 11;//定义红外接收器的引脚为11
int LED_PIN=4;//定义发光LED引脚数字4
int a=0;
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==0x4CB3817E &a==0) //此处的32位值与发射部分发射的值要保持一致
{
    digitalWrite(LED_PIN,HIGH);//LED点亮
a=1;
}
else if(results.value==0x4CB3817E &a==1)
{
digitalWrite(LED_PIN,LOW);//LED熄灭
a=0;
}
    irrecv.resume(); // 接收下一个值
  }
}

将以上部分程序烧入开发板二即完成接收部分制作。
两块开发板上电,当按下发射板上按键时,led点亮,再次按下发射板上按键是,led熄灭