机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧。

项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html


本篇博文是创客开发:手撕代码篇的最后一节,项目在之前使用Mind+编程中讲到过:和12岁小同志搞创客开发:如何驱动红外遥控器?

这次将通过代码的方式进一步理解红外遥控器的使用。

我们知道家里的那些遥控器,不管是电视还是空调都是通过红外来控制的,我们这次也通过红外来做个遥控灯。

在开始之前,先来个预热实验,通过串口来了解下如何使用红外接收管和遥控器。

项目连线效果如下所示:

驱动程序如下所示:

#include <IRremote.h>int RECV_PIN = 10;IRrecv irrecv(RECV_PIN);decode_results results;void setup()
{Serial.begin(9600);irrecv.enableIRIn(); // Start the receiver
}void loop() {if (irrecv.decode(&results)) {Serial.println(results.value, HEX);irrecv.resume(); // Receive the next value}
}

下载完成后,打开Arduino IDE的串口监视器(Serial Monitor),设置波特率baud为:9600,与代码中Serial.begin(9600)相匹配。

设置完后,用Mini遥控器的按钮对着红外接收管的方向,任意按个按钮,都能在串口监视器上看到相对应的代码。如下图所示,按数字“0”,接收到对应16进制的代码是FD30CF。每个按钮都有一个特定的16进制的代码。

如果按住常按一个键不放就是出现“FFFFFFFF”。

在串口中,正确接收的话,应该收到以FD开头的六位数。如果遥控器没有对准红外接收管的话,可能会接收到错误的代码。如下图所示:

预热完之后,我们言归正传,开始制作遥控灯。硬件设备其实就是在原有的基础上,加了个LED灯,效果如下图所示:

实现代码如下所示:

#include <IRremote.h>           //调用IRremote.h库
int RECV_PIN = 10;              //定义RECV_PIN变量为10
int ledPin = 3;                // LED – digital 3
boolean ledState = LOW;         // ledstate用来存储LED的状态
IRrecv irrecv(RECV_PIN);        //设置RECV_PIN(也就是11引脚)为红外接收端
decode_results results;         //定义results变量为红外结果存放位置void setup(){Serial.begin(9600);          //串口波特率设为9600irrecv.enableIRIn();          //启动红外解码pinMode(ledPin,OUTPUT);       // 设置LED为输出状态
}void loop() {//是否接收到解码数据,把接收到的数据存储在变量results中if (irrecv.decode(&results)) {  //接收到的数据以16进制的方式在串口输出   Serial.println(results.value, HEX);//一旦接收到电源键的代码, LED翻转状态,HIGH变LOW,或者LOW变HIGHif(results.value == 0xFD00FF){ledState = !ledState;             //取反      digitalWrite(ledPin,ledState);    //改变LED相应状态        }     irrecv.resume();  // 继续等待接收下一组信号}
}

在这里,我们多定义了一个变量ledState,通过名字应该就可以看出来含义了,用来存储LED的状态的,由于LED状态就两种(1或者0),所以我们使用boolean变量类型。

setup()函数中,对使用串口,启动红外解码,数字引脚模式进行设置。

到了主函数loop(),一开始还是先判断是否接收到红外码,并把接收到的数据存储在变量results中。

if (irrecv.decode(&results))

一旦接收到数据后,程序就要做两件事。第一件事,判断是否接收到了电源键的红外码。

if(results.value == 0xFD00FF)

第二件事,就是让LED改变状态。

ledState = !ledState;             //取反
digitalWrite(ledPin,ledState);    //改变LED相应状态   

最后,继续等待下一组信号。

irrecv.resume();  // 继续等待接收下一组信号

和12岁小同志搞创客开发:手撕代码,做一款遥控灯相关推荐

  1. 和12岁小同志搞创客开发:手撕代码,做一款数字骰子

    机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧. 项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html ...

  2. 和12岁小同志搞创客开发:手撕代码,做一款密室自动门

    机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧. 项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html ...

  3. 和12岁小同志搞创客开发:手撕代码,做一款亮度可调节灯

    目录 1.PWM呼吸灯 2.亮度可调节灯 机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧. 项目专栏:https://blog.csdn.net/m0_38106923/ca ...

  4. 和12岁小同志搞创客开发:手撕代码,做一款声控灯

    机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧. 项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html ...

  5. 和12岁小同志搞创客开发:手撕代码,做一款人体感应灯

    目录 1.传感器原理 2.代码实践 机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧. 项目专栏:https://blog.csdn.net/m0_38106923/categ ...

  6. 和12岁小同志搞创客开发:如何驱动红外遥控器?

    目录 1.红外遥控器通信原理 2.NEC协议 3.实践 机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧. 项目专栏:https://blog.csdn.net/m0_3810 ...

  7. 和12岁小同志搞创客开发:手撕代码,做一款温湿度检测器

    机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧. 项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html ...

  8. 和12岁小同志搞创客开发:手撕代码,做一款火焰报警器

    机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧. 项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html ...

  9. 和12岁小同志搞创客开发:手撕代码,做一款节拍电子鼓

    机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧. 项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html ...

最新文章

  1. web大屏展示用到的组件_基于 HTML5 的工业组态高炉炼铁 3D 大屏可视化
  2. 深度学习数学基础(三): 激活函数、正则化函数、损失函数、评价指标
  3. jenkins pipeline发送邮件报错解决办法: failed to connect, no password specified?
  4. 后台服务系统之Dubbo Admin的讲解
  5. 用Java模仿简单的Ping命令
  6. LeetCode 106. 从中序与后序遍历序列构造二叉树(递归)
  7. [LeetCode] Minimum Window Substring 散列映射问题
  8. Java学习笔记之设计模式(3)抽象工厂模式
  9. Apex弹窗闪退报错问题解决方案清晰讲解(系统软件层面解决,已亲测可行)
  10. SpringBoot整合ureport2
  11. python 字节码 汇编器_基础系列1-python解释器、PVM、源代码、字节码理解
  12. hive3.0使用问题小记
  13. MSDC 4.3 接口规范(30)
  14. 地铁客流量分析可视化演示系统(附代码)
  15. python可以取代excel吗_python能彻底取代excel吗?
  16. 退出华为的时候,我在想些什么
  17. JAVA工程师待遇如何
  18. Exemplar-based image inpainting(+code)
  19. 小米品牌广告引擎与算法实践
  20. 机器学习算法——线性回归的详细介绍 及 利用sklearn包实现线性回归模型

热门文章

  1. 2021年大数据Spark(三十一):Spark On Hive
  2. 2021年大数据Spark(八):环境搭建集群模式 Standalone HA
  3. php.ini Xdebug配置
  4. [JavaScript] JavaScript数组挖掘,不只是讲数组哟(2)
  5. Windows 10系统中如何显示文件后缀名
  6. 怎么给html页面添加网格线,html – 如何使用css制作网格(如图纸网格)?
  7. java.lang.OutOfMemoryError:GC overhead limit exceeded填坑心得
  8. RAID详解[RAID0/RAID1/RAID10/RAID5]
  9. Session原理、安全以及最基本的Express和Redis实现
  10. 面试题:查询连续出现的数字