零知开源快速入门22-红外遥控LED灯

红外在电子制作中作为一种简单的数据传输方法是很常用的一种,在生活中我们也可以见到很多红外应用如红外遥控。我们在这一篇中就简单介绍下红外遥控的应用,让我们的电子作品能够无线操控。

一、工具原料

电脑,windows系统
零知开发板
micro-usb线
LED灯红色、绿色、黄色各一个
220Ω 电阻3个
红外遥控器1个
红外接收头1个
面包板一个+若干跳线

我们使用的遥控器如下:

其对应的编码如下:

使用的接收头及其接口如下

二、硬件连接

1、硬件连接原理图

2、实际连线

三、方法步骤

1、打开零知实验室软件开发工具,然后新建项目,输入以下代码:

2、按照之前的方式先【编译】,然后【上传】到开发板中。


							
	/**
	*    文件: 红外遥控点灯.ino      by 零知实验室([url=http://www.lingzhilab.com]www.lingzhilab.com[/url])
	*    -- 零知开源,让电子制作变得更简单! --
	*    时间: 2018/07/02 13:45
	*    说明: 使用红外遥控来控制LED灯
	**/
	 
	#include <IRremote.h> //红外相关的库
	 
	//红外遥控器上数字 0,1,2,3 的红外编码
	const int code[4]= {0xff6897,0xff30cf,0xff18e7,0xff7a85};
	 
	//分别连接红色、黄色、绿色灯
	uint8_t LED_R = 0;
	uint8_t LED_Y = 1;
	uint8_t LED_G = 2;
	 
	uint8_t IR_RECV_pin        = 3;//接收红外的引脚
	 
	IRreceiver irrecv(IR_RECV_pin);
	 
	IRdecode_results decode_result;
	 
	// the setup routine runs once when you press reset:
	void setup() {
	    // put your setup code here, to run once:
	        irrecv.enableIRIn();//开启红外接收
	         
	        pinMode(LED_R, OUTPUT);
	        pinMode(LED_Y, OUTPUT);
	        pinMode(LED_G, OUTPUT);
	         
	        digitalWrite(LED_R, HIGH);//关闭所有的灯
	        digitalWrite(LED_Y, HIGH);
	        digitalWrite(LED_G, HIGH);
	         
	        Serial.begin(9600);
	}
	 
	// the loop routine runs over and over again forever:
	void loop() {
	    // put your main code here, to run repeatedly:
	        if(irrecv.decode(&decode_result)){
	                //根据解码的结果执行对应的动作
	                Serial.print("receive code: 0X");
	                Serial.println(decode_result.value, HEX);
	                if(decode_result.value == code[0]){
	                        digitalWrite(LED_R, LOW);//打开红色LED
	                }
	                if(decode_result.value == code[1]){
	                        digitalWrite(LED_Y, LOW);//打开黄色LED
	                }
	                if(decode_result.value == code[2]){
	                        digitalWrite(LED_G, LOW);
	                }
	                if(decode_result.value == code[3]){
	                        digitalWrite(LED_R, HIGH);//关闭所有的LED
	                        digitalWrite(LED_Y, HIGH);
	                        digitalWrite(LED_G, HIGH);
	                }
	                 
	                 
	                irrecv.resume();//接收下一个
	        }
	}							
						
							
						

四、成果展示

上面步骤成功完成后,我们进行测试,我们分别按下遥控器上面的0,1,2号按键,可以看到相应的红色、黄色、绿色LED灯亮,当我们按下3号按键可以看到所有的LED熄灭,同时可以看到串口调试工具中有相应的按键编码信息: