芒果爱吃胡萝卜 - 发送
type: channel
link: http://blog.mangolovecarrot.net/tag/%E5%8F%91%E9%80%81/
items: 【知乎问答】Arduino红外遥控led灯的原理是什么，要详细点的，不要代码？

【知乎问答】Arduino红外遥控led灯的原理是什么，要详细点的，不要代码？
type: item
date: 2020-08-13T18:03:10+08:00
description: 原文首先你要知道红外遥控的原理是什么。市面上目前最常用的方法是利用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板上面的晶振更换到频率更高，会有什么效果吗？【知乎问答】看门狗在嵌入式系统中的作用是个什么？