“(SKU:RB-03T001)红外无线遥控套件”的版本间的差异
(→产品相关推荐) |
(→红外遥控接收传感器的测试) |
||
第136行: | 第136行: | ||
}</pre> | }</pre> | ||
+ | |||
==Arduino平台下键值表== | ==Arduino平台下键值表== | ||
[[文件:QQ20150623151737.png|500px|有框|居中]] | [[文件:QQ20150623151737.png|500px|有框|居中]] |
2015年9月15日 (二) 13:41的版本
目录 |
产品概述
红外线遥控接收传感器模块,它采用了 HS 0038 一体化红外接收头作为信号接收元件,确保了产品具有极高的可靠性与卓越的长期稳定性。HS 0038 是一个集成度很高的元器件。红外接收电路一体化的红外接收装置将遥控信号的接收、放大、检波、整形集于一身,并且输出可以让单片机识别的 TTL 信号,这样大大简化了接收电路的复杂程度和电路的设计工作,方便使用。在产品中我们采用红外一体化接收头 HS0038,外观如封面图片所示。HS0038 黑色环氧树脂封装,不受日光、荧光灯等光源干扰。HS 0038 为直立侧面收光型。它接收红外信号频率为 38 kHz,周期约 26 μs,能同时对信号进行放大、检波、整形,得到 TTL 电平的编码信号。因此该款产品具有品质卓越、超快响应、抗干扰能力强、性价比高等优点。 应用领域:家电产品、人机互动平台、教学仪器仪表、PC遥控器等。
规格参数
- 供电电压:4.5-5.5V
- 输出信号:TTL
- 接收信号距离半径:不大于7m(根据遥控器发射功率而定,此参数为本套遥控器测试结果);
- 模块尺寸:13.5mm×38.3mm
- 模块重量:2g
产品清单
1.无线红外遥控器*1个
2.3P传感器连接线*1个
3.红外接收传感器*1个
使用方法
步骤一:接线 S端口连接到控制器的 I/O 口。+、- 分别接到电源的+5V 和 GND。
步骤二:安装固定 根据需要通过直径 φ3 的连接件(铜柱、螺钉、螺栓等)进行固定。
红外遥控接收传感器的测试
我们使用 Arduino 控制器来做个测试,要用到硬件设备如下:
- Arduino 控制器×1
- Arduino LCD1602 字符液晶扩展板×1
- 红外遥控接收传感器模块×1
- 蜂鸣器发声模块×1
- 超薄红外遥控器×1
- 通用 3P 传感器连接线×2
- USB 数据通信线×1
- 如图所示,使用传感器连接线将红外遥控接收传感器连接到 LCD1602 字符液晶扩
展板的模拟口 1 上,如需声音提示可把本公司的蜂鸣器发声模块连接到模拟口 2 上, 这里要说明下,我们是把模拟接口当做数字接口用,这样比较方便,参见例子程序中 接口定义。连接好硬件后,再把测试源程序库文件解压缩到你的 Arduino 安装目录下的 hardware\ libraries 里面(如需红外遥控接收传感器库文件请联系我们的技术客服)。然 后将代码编译后下载到 Arduino 里,就可以进行键值读取试验了,同时在软件里的串口 监视窗口上可以看见同步的键值显示(注:软件串口波特率设置为 9600)。
- Arduino 实验代码如下:
#include <LCD4Bit_mod.h> LCD4Bit_mod lcd = LCD4Bit_mod(2); #define TIMER_RESET TCNT1 = 0 #define SAMP LE_S IZE 68 int BUZZER = 16;// 设置模拟口 2 为蜂鸣器信号输出引脚 int IRpin = 15; //设置模拟口 1 为信号接收引脚 unsigned int TimerValue[SAMPLE_SIZE]; char direction[SAMPLE_SIZE]; byte change_count; long t ime1, t ime2; unsigned long data; char a,b,c,d,e; unsigned long irc; char tab[12]={"0123456789"}; void setup() { pinMode(IRpin, INPUT); pinMode(13, OUTPUT); pinMode(BUZZER,OUTPUT);// 设置与蜂鸣器连接的引脚为输出模式 lcd.init(); lcd.clear( ); lcd.printIn("www.robotbase.cn"); lcd.cursorTo(2, 0); lcd.printIn("IR_CODE:"); TCCR1B = 0x03; TCCR1A = 0x00; a=0;b=0;c=0;d=0;e=0; Serial.begin(9600); bee(); void loop() { lcd.cursorTo(2, 9); lcd.print(tab[a]); lcd.cursorTo(2, 10); lcd.print(tab[b]); lcd.cursorTo(2, 11); lcd.print(tab[c]); lcd.cursorTo(2, 12); lcd.print(tab[d]); lcd.cursorTo(2, 13); lcd.print(tab[e]); ir_code(); Serial.println(irc); } void bee() { digitalWrite(BUZZER,LOW);//蜂鸣器响 delay(300); digitalWrite(BUZZER,HIGH);//蜂鸣器响 delay(300); } void ir_code() { change_count = 0; while(digitalRead(IRpin) == HIGH) {} // 等待起始位 TIMER_RES ET; TimerValue[change_count] = TCNT1; direct ion[change_count++] = '0'; while (change_count < S AMP LE_SIZE) { if (direction[change_count-1] == '0') { while(digitalRead(IRpin) == LOW) {} // 等待电平上升沿出现 TimerValue[change_count] = TCNT1; direct ion[change_count++] = '1'; // 保持信号状态 } else { while(d igit alRead(IRpin) == HIGH) {} // 等待电平信号的下降沿 TimerValue[change_count] = TCNT1; direct ion[change_count++] = '0'; // 保持信号状态 } } change_count = 0; data = 0; time1 = (long) TimerValue[change_count] * 4; change_count += 2; while (change_count < SAMPLE_SIZE) { time2 = (long) TimerValue[change_count] * 4; if ((t ime2 - time1) > 8000) { else if ((time2 - t ime1) > 1680) { data = data << 1; // 左移一位 data |= 1; else { data = data << 1; change_count += 2; time1 = time2; irc=data%100000; a=irc/10000; b=irc%10000/1000; c=irc%1000/100; d=irc%100/10; e=irc%10; bee(); }