原文
首先你要知道红外遥控的原理是什么。市面上目前最常用的方法是利用38k的红外载波来进行遥控。发送端发送38k的调制过的载波,接收端也只接收38k的红外载波。然后就是如何调制这个载波,具体来说就是接收端和发送端,双方要利用同一种通信协议来进行数据传输。举个例子,比如你可以订这么一个协议,发送端0.5秒钟发送一次38k的载波然后暂停发送0.5秒,然后再发送一秒的载波。接收端那边如果接收到了0.5秒的载波并且0.5秒后又出现了一秒的载波,那么接收端就认为发送端发过来了一个信号,这个信号的具体意义由协议本身决定,也是就是由你的程序决定,比如你可以指定如果收到这种型号,就表示要开灯。然后你可以再定一个发送0.5秒暂停,0.5秒再发送,0.5秒表示关灯。以此类推实际应用中的协议比这个要复杂的多比起自己设计协议,既不安全。多数时候会采用已经有的公开的协议,比如最常用的NEC协议。这个协议包含了一个校验头,用户编码和具体的命令内容以及校验码。你完全可以使用单片机编程自己实现这个协议,在发送端和接收端分别实现这个协议。而arduino提供了现成的库可以直接使用,库文件里已经实现了这种协议,或者是类似协议,你只需要关心你发送的具体命令即可。具体到你说的这个例子,如果说接收端的LED灯并不是你程序单独控制,而是市面上直接买到的成品,那么很有可能就是采用了公开的最常用的NEC协议。另外,我举的例子0.5秒这种间隔其是太长了,一般都是以毫秒甚至是微秒为单位。
系列文章
- 【知乎问答】电信宽带封了80端口,为什么还能通过端口映射访问80端口?
- 【知乎问答】Arduino红外遥控led灯的原理是什么,要详细点的,不要代码?【当前文章】
- 【知乎问答】如果直接把单片机PCB板上面的晶振更换到频率更高,会有什么效果吗?
- 【知乎问答】看门狗在嵌入式系统中的作用是个什么?