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

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

项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html
本篇博文是创客开发:手撕代码篇的最后一节,项目在之前使用 Mind+编程中讲到过:和12岁小同志搞创客开发:如何驱动红外遥控器?
这次将通过代码的方式进一步理解红外遥控器的使用。
我们知道家里的那些遥控器,不管是电视还是空调都是通过红外来控制的,我们这次也通过红外来做个遥控灯。
在开始之前,先来个预热实验,通过串口来了解下如何使用红外接收管和遥控器。
项目连线效果如下所示:

驱动程序如下所示:
下载完成后,打开 Arduino IDE 的串口监视器(Serial Monitor),设置波特率 baud 为:9600,与代码中 Serial.begin(9600)相匹配。
设置完后,用 Mini 遥控器的按钮对着红外接收管的方向,任意按个按钮,都能在串口监视器上看到相对应的代码。如下图所示,按数字“0”,接收到对应 16 进制的代码是 FD30CF。每个按钮都有一个特定的 16 进制的代码。

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

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

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

实现代码如下所示:
在这里,我们多定义了一个变量 ledState,通过名字应该就可以看出来含义了,用来存储 LED 的状态的,由于 LED 状态就两种(1 或者 0),所以我们使用 boolean 变量类型。
setup()函数中,对使用串口,启动红外解码,数字引脚模式进行设置。
到了主函数 loop(),一开始还是先判断是否接收到红外码,并把接收到的数据存储在变量 results 中。
一旦接收到数据后,程序就要做两件事。第一件事,判断是否接收到了电源键的红外码。
第二件事,就是让 LED 改变状态。
最后,继续等待下一组信号。
版权声明: 本文为 InfoQ 作者【不脱发的程序猿】的原创文章。
原文链接:【http://xie.infoq.cn/article/027bc21ce0f200ee623fe5e46】。文章转载请联系作者。
评论