【雕爷学编程】Arduino动手做(71) | 您所在的位置:网站首页 › 单片机红外接收模块32 › 【雕爷学编程】Arduino动手做(71) |
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验七十一:HX1838红外无线遥控套件红外扩展模块(遥控器+接收板) 红外遥控器、发射及接收模块相关实验 一、实验环境 1、实验所需硬件清单 继电器模块X1 红外发射模块X1 红外接收模块X3 有源蜂鸣器模块X1 Arduino Uno开发板 X1 杜邦线 若干(备了10条) LED发光二极管(蓝色)X1 220欧姆限流电阻(1/8W)x1 红外遥控器(3键、17键与20键)X3 Proto Shield 原型扩展板(带mini面包板)X1 2、实验所需软件平台 代码编程 Arduino IDE (版本1.8.13) 仿真编程 Linkboy (版本V4.2) 图形编程 Mind+ (版本 V1.7.0 RC1.0)以及 编玩边学(线上平台) 图形编程 Mixiy (米思齐 版本 V1.1.5) 二、简易红外发射和接收模块的实验 1、实验接线示意图
2、程序一:1秒间隔发射红外线(直接发射无编码) 引脚说明 GND:电源地 VCC:电源正 OAT:数字信号输入,高为发射红外,低为关闭红外 参考开源代码(Arduino): /* 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 3.1 红外遥控器及接收模块系列实验 程序一:1秒间隔发射红外线(直接发射无编码) 硬件:使用红外发射模块(带有红外发射LED指示灯) 实验接线:将红外发射模块接在Arduino UNO的数字3引脚 */ void setup() { pinMode(3, OUTPUT); //将D3引脚设置为输出引脚 } void loop() { digitalWrite(3, HIGH); // D3引脚输出高电平,通电发射红外 delay(1000); // 延时1000毫秒 digitalWrite(3, LOW); // D3引脚输出低电平,断电发射红外 delay(1000); }3、实验效果:据资料,说是通过手机摄像模式对着发射端看会看到淡蓝光,实验测试华为和中兴手机,没有看到,估计是手机自身软件过滤掉红外光(本身就是不可见光线)。只有发射指示灯不断闪烁证明模块在工作。实验场景图如下。
5、IRremote库介绍 下述程序中,Arduino将通过调用函数sendSony(0xa90, 12) 来发射Sony协议指令。该函数的两个参数中,0xa90为指令信息内容,12为指令信息位数。假如需要发射NEC协议指令则可以调用函数sendNEC(0xF740BF, 32)。其中0xF740BF为指令信息内容,32为指令信息位数。 IRremote库支持的所有协议函数列表如下: *void sendDISH(unsigned long data, int nbits); //发射DISH协议指令 *sendNEC(unsigned long data, int nbits); //发射NEC协议指令 sendSony(unsigned long data, int nbits); //发射Sony协议指令void sendRC5(unsigned long data, int nbits); //发射Philips RC5协议指令void sendRC6(unsigned long data, int nbits); //发射Philips RC6协议指令void sendSharp(unsigned long data, int nbits); //发射Sharp协议指令void sendPanasonic(unsigned int address, unsigned long data); //发射Panasonic协议指令void sendJVC(unsigned long data, int nbits, int repeat); //发射JVC协议指令void sendRaw(unsigned int buf[], int len, int hz); //发射原始指令6、程序二:使用IRremote库,通过红外LED发射控制信号 参考开源代码(Arduino): /* 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 3.1 红外遥控器及接收模块系列实验 安装库:打开IDE—工具—管理库—搜索IRRemote库—安装(V2.2.3) 程序二:使用IRremote库,通过红外LED发射控制信号 硬件:使用红外发射模块(带有红外发射LED指示灯) 实验接线:将红外发射模块接在Arduino UNO的数字3引脚 */ #include IRsend irsend; void setup(){ } void loop() { for (int i = 0; i Serial.begin(9600); // 假如启动过程出现问题,提示用户启动失败 Serial.println("Enabling IRin"); irrecv.enableIRIn(); // 启动接收器 Serial.println("Enabled IRin"); } void loop() { if (irrecv.decode(&results)) { //检查是否接收到红外遥控信号 Serial.println(results.value, HEX); //输出指令信息 irrecv.resume(); //接收下一指令 } delay(100); }8、实验接收部分的串口信息截图 9、程序四:使用IRremote库,通过红外LED发射控制信号之二 参考开源代码(Arduino): /* 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 3.1 红外遥控器及接收模块系列实验 安装库:打开IDE—工具—管理库—搜索IRremote库—安装(V2.2.3) 程序四:使用IRremote库,通过红外LED发射控制信号之二 硬件:使用红外发射模块(带有红外发射LED指示灯) 实验接线:将红外发射模块接在Arduino UNO的数字3引脚 */ #include // 导入红外遥控库 // 头文件已经定义PIN 3为信号输出 // 所以只能连接PIN 3 ,若更改请在头文件更改 //Mega2560对应的是引脚9 IRsend irsend; // 定义 IRsend 物件来发射红外线讯号 void setup() { } void loop() { irsend.sendNEC(0xFF02FD, 32); //这里的FF02FD编码,就是LED彩灯遥控的开关编码, //若果需要控制其他功能,请先用接收管读取正确的编码值。 delay(2000); }10、程序五:使用IRremote库,通过红外接收管接收控制信号之二 参考开源代码(Arduino): /* 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 3.1 红外遥控器及接收模块系列实验 安装库:打开IDE—工具—管理库—搜索IRremote库—安装(V2.2.3) 程序五:使用IRremote库,通过红外接收管接收控制信号之二 硬件:使用红外接收模块(带有红外接收LED指示灯) 实验接线:将红外接收模块接在Arduino UNO的数字2引脚 */ #include int RECV_PIN = 2; //定义红外接收器的引脚为2 IRrecv irrecv(RECV_PIN); decode_results results; void setup() { Serial.begin(9600); irrecv.enableIRIn(); // 初始化红外接收器 } void loop() { if (irrecv.decode(&results)) { //检查是否接收到红外遥控信号 Serial.println(results.value, HEX); //以16进制换行输出接收代码 Serial.println(); //为了便于观看输出结果增加一个空行 irrecv.resume(); // 接收下一个值 } }10、实验接收部分的串口信息截图
|
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |