基于arduino的红外遥控
一、什么是红外接收头?
红外遥控器发出的信号是一连串的二进制脉冲码。为了使其在无线传输过程中免受其他红外信号的干扰,通常都是先将其调制在特定的载波频率上,然后再经红外发射二极管发射出去,而红外线接收装置则要滤除其他杂波,叧接收该特定频率的信号并将其还原成二进制脉冲码,也就是解调.
二、工作原理
内置接收管将红外发射管发射出来癿光信号转换为微弱的电信号,此信号经由IC内部放大器进行放大,然后通过自动增益控制、带通滤波、解调变、波形整形后还原为遥控器发射出的原始编码,经由接收头的信号输出脚输入到电器上的编码识别电路。
实验材料:
- arduino Uno主板
- USB数据线
- 红外接收模块、
- 遥控器
- led灯
- 面包板
- 9V电池
- 跳线若干
1.读取遥控器唯一按键编码
#include <boarddefs.h>
#include <IRremote.h>
#include <IRremoteInt.h>
#include <ir_Lego_PF_BitStreamEncoder.h>
int RECV_PIN =11;//定义读取数据的管脚
IRrecv irrecv(RECV_PIN);//设置 irReceiverPin 定义的端口为红外信号接收端口
decode_results results;///解码结果放置
void setup() {
Serial.begin(9600);//设置波特率
irrecv.enableIRIn();//开启串口
}
void loop() {
if(irrecv.decode(&results)){//解码成功,把数据放入results变量中
Serial.println(results.value,HEX);//显示红外编码
irrecv.resume();// 红外线码元位数
}
}
2.功能设置
将读取到的遥控按键编码写入功能程序,当读取到正确的编号时通过点亮led灯来模拟模拟功能,若编号不正确则灯不亮。
/*
* 远红外遥控器
*/
#include <boarddefs.h>
#include <IRremote.h>
#include <IRremoteInt.h>
#include <ir_Lego_PF_BitStreamEncoder.h>
int irReceiverPin=7;
int LedPin=13;//定义led灯的管脚
IRrecv irrecv(irReceiverPin);
decode_results results;
void setup() {
pinMode(LedPin,OUTPUT);//定义为输出
Serial.begin(9600);
irrecv.enableIRIn();//启动接收器
}
void loop() {
if(irrecv.decode(&results)){//解码成功,把数据放入results变量中
Serial.print("irCode: ");
Serial.print(results.value,HEX);//显示红外编码
Serial.print(",bits: ");
Serial.println(results.bits);// 显示红外编码位数
irrecv.resume();
if(results.value==0XFFA25D){
digitalWrite(LedPin,HIGH); //灯亮
delay(600);
}else{
digitalWrite(LedPin,LOW);//灯灭
}
}
}