microduino实现红外线发送与接收

一、目标:使用microduino套件实现红外线的发送与接收

二、材料:(1)模块:Microduino Core/Core+ (核心板),Microduino-USBTTL(下载程序)

(2)传感器:红外线发射器,红外线接收器

(3)其它设备:Micro-USB线,面包板,导线

- 红外线发射器使用说明:

目前的红外发射器有两种规格,两脚的(左图)和三脚的(右图)

两脚的结构和普通LED管相似,长引脚接高电平,短引脚接低电平

三脚的连接情况分别是:5V,OUT,GND,其中OUT是指定的输出端口。它与红外接收管的引脚结构类似。

    

- 面包板使用说明:如下图所示,上下两行线是分别连通的,中间的纵线是分别连通的。

三、红外线发射原理:

红外发射器与普通LED类似,只需要给它分配一个电流输出引脚,连通电路就可以了。代码也非常简单,在Arduino IDE中新建项目,写入:

void setup() {
     pinMode(13, OUTPUT);
}

void loop() {
    digitalWrite(13, HIGH);
    delay(5);
    digitalWrite(13, LOW);
}

即在setup中定义13号为输出引脚,然后循环执行loop中的13号引脚高低电流交替,使得红外发射管时而导通时而阻塞,产生红外线闪烁效果。

然后在“工具”中选择对应型号的开发板和处理器型号(本例使用的是Microduino/mCookie-device, Microduino/mCookie-core 16M),再编译程序。

接着连接电路(两脚的只需将长脚连接自己定义的输出端口,短脚接GND):

 

最后,你可以通过电脑的相机观察,将灯管正对摄像头,如果看见紫色的红外线,就说明你成功了。效果如下图所示:

四、红外线接收原理及使用

首先,再Ardunio IDE中加载IRremote库:

#include <IRremote.h>

然后,定义红外接收器的输出管脚,并将其使能:

IRrecv irrecv(11);

irrecv.enableIRIn();

接着定义一个变量用于判断是否接收到红外线:

decode_results results;

如果接收到红外线:

if(irrecv.decode(&results)){

        //在此执行你想做的逻辑
        irrecv.resume(); 
     }

    * 示例代码(为了看见直观的效果,我连接了一个LED,当接收到红外线时,LED亮起):

#include <IRremote.h>

IRrecv irrecv(11);
decode_results results;    

void setup() {
    pinMode(3, OUTPUT); /* 连接LED的引脚号 */
    irrecv.enableIRIn();
}

void loop() {
  digitalWrite(3, LOW);
  if(irrecv.decode(&results)){
    digitalWrite(3, HIGH);
    irrecv.resume();
    delay(5);
  }
}

效果图(左图为未接收红外线时,右图为接收到遥控器发射的红外线):

 

时间: 2024-12-15 22:59:26

microduino实现红外线发送与接收的相关文章

XMPP系列(四)---发送和接收文字消息,获取历史消息功能

今天开始做到最主要的功能发送和接收消息.获取本地历史数据. 先上到目前为止的效果图:              首先是要在XMPPFramework.h中引入数据存储模块: //聊天记录模块的导入 #import "XMPPMessageArchiving.h" #import "XMPPMessageArchivingCoreDataStorage.h" #import "XMPPMessageArchiving_Contact_CoreDataObje

JavaWeb学习总结(五十一)——邮件的发送与接收原理

一. 邮件开发涉及到的一些基本概念 1.1.邮件服务器和电子邮箱 要在Internet上提供电子邮件功能,必须有专门的电子邮件服务器.例如现在Internet很多提供邮件服务的厂商:sina.sohu.163等等他们都有自己的邮件服务器. 这些邮件服务器类似于现实生活中的邮局,它主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱中. 电子邮箱(E-Mail地址)的获得需要在邮件服务器上进行申请,确切地说,电子邮箱其实就是用户在邮件服务器上申请的一个账户,用户在邮件服务器上申请了一

DICOM医学图像处理:DIMSE消息发送与接收“大同小异”之DCMTK fo-dicom mDCM

背景: 从DICOM网络传输一文开始,相继介绍了C-ECHO.C-FIND.C-STORE.C-MOVE等DIMSE-C服务的简单实现,博文中的代码给出的实例都是基于fo-dicom库来实现的,原因只有一个:基于C#的fo-dicom库具有高封装性.对于初学者来说实现大多数的DIMSE-C.DIMSE-N服务几乎都是"傻瓜式"操作--构造C-XXX-RQ.N-XXX-RQ然后绑定相应的OnResponseReceived处理函数即可.本博文希望在前几篇预热的基础上,对比DCMTK.fo

linux网卡数据流 发送与接收

通常网卡驱动代码量比较大,但是都离不开发送与接收,掌握好骨干也就好理解与调试了. 数据发送 : 发送函数:xxx_start_xmit() 上层封装好了sk_buff丢进kernel后,buf存储在skb->data中,通 过 xxx_start_xmit(),发送出去. 下面的实例是通过写入某个设备节点发送出去,当然这个设备肯定是串口或者sdio等传输设备, 也可以直接调用写入函数将buf送出去. 比如sdio的写入: sdio_memcpy_toio(xxx->func, addr, bu

node.js EventEmitter发送和接收事件

EventEmitter是nodejs核心的一部分.很多nodejs对象继承自EventEmitter,用来处理事件,及回调.api文档地址: http://nodejs.org/api/events.html#events_class_events_eventemitter Event: Many objects in Node emit events: a net.Server emits an event each time a peer connects to it, a fs.read

发送和接收数据包

发送和接收数据包 原文:Game Networking系列,作者是Glenn Fiedler,专注于游戏网络编程相关工作多年. 概述 在之前的网游中的网络编程系列1:UDP vs. TCP中(推荐先看前面那篇),我们经过讨论得出:网游中传输数据应该使用UDP而不是TCP.我们选择UDP是为了不需要等待重发数据包,从而达到数据的实时性. 注意,因为接下来英文原文中所有的代码是C++写的,而我是个pythoner,我的计划是:通过理解文章,我用python实现UDP收发数据包.虚拟连接(原文后两章的

Udp广播的发送和接收(ios+AsyncUdpSocket)下篇

接上篇C#的Udp广播的发送和接收 http://www.cnblogs.com/JimmyBright/p/4637090.html ios中使用AsyncUdpSocket处理Udp的消息非常方便 准备工作: 在github上找到cocoaAsyncSocket,下载下来,把其中AsyncUdpSocket.h和AsyncUdpSocket.m文件copy到你的项目中,其他文件都不需要.copy到swift环境下会自动提示创建桥接文件,点击确认就可以了. 发送Udp: 上面代码对局域网广播消

Java UDP数据报发送与接收 学习

java中DatagramPacket表示存放数据的数据报,DatagramSocket表示接受或发送数据报的套接字. 这两个类所有构成的网络链接是基于UDP协议的. import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; public class Sender { public static void main(String[] args) { try { // 创

Android socket 使用PrintWriter和BufferedReader发送和接收出现乱码问题解决

项目中用到了Android和C++的通信,选择了用socket 发送字符的方式,一开始使用的代码是: socket=new Socket(); InetSocketAddress isa = new InetSocketAddress(IP_STR, port); socket.connect(isa, 100); PrintWriter out=new PrintWriter(socket.getOutputStream(),true); BufferedReader recvBuf=new