【入门教程】DFR0100 Arduino教程16-遥控灯-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5098|回复: 0

【入门教程】DFR0100 Arduino教程16--遥控灯

[复制链接]
发表于 2016-12-7 10:30 | 显示全部楼层 |阅读模式
该教程实验平台:Arduino入门套件
上一篇教程:
Arduino教程 Lesson 15--红外接收

前一节对红外接收管如何使用有了简单的了解,这一节我们做个好玩儿的东西,遥控灯!

所需材料
  • 1×   5mm LED灯  
  • 1×   220欧电阻
  • 1×   红外接收管
  • 1×   Mini遥控器

STEP 1: 硬件连接
其实就是在原有的基础上,加了个LED和电阻,LED使用的是数字引脚10。红外接收管仍然接的是数字引脚11。



STEP 2: 输入代码
这里不建议一步一步输入代码,可以在原有的代码上进行修改,观察下相对前一段代码增加了哪些内容。
[mw_shl_code=c,true]
#include <IRremote.h>
int RECV_PIN = 11;              
int ledPin = 10;                // LED – digital 10
boolean ledState = LOW;         // ledstate用来存储LED的状态
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup(){
     Serial.begin(9600);
     irrecv.enableIRIn();
     pinMode(ledPin,OUTPUT);       // 设置LED为输出状态
}

void loop() {
      if (irrecv.decode(&results)) {     
              Serial.println(results.value, HEX);

              //一旦接收到电源键的代码, LED翻转状态,HIGH变LOW,或者LOW变HIGH
         if(results.value == 0xFD00FF){
                 ledState = !ledState;             //取反      
                 digitalWrite(ledPin,ledState);    //改变LED相应状态        
            }     
            irrecv.resume();
        }
}
[/mw_shl_code]


STEP 3: 代码回顾
程序一开始还是对红外接收管的一些常规定义,按原样搬过来就可以了。
[mw_shl_code=c,true]
#include <IRremote.h>      //调用IRremote.h库
int RECV_PIN = 11;         //定义RECV_PIN变量为11
IRrecv irrecv(RECV_PIN);   //设置RECV_PIN(也就是11引脚)为红外接收端
decode_results results;    //定义results变量为红外结果存放位置

     int ledPin = 10;                // LED – digital 10
boolean ledState = LOW;         // ledstate用来存储LED的状态
[/mw_shl_code]

setup()函数中,对使用串口,启动红外解码,数字引脚模式进行设置。

到了主函数loop(),一开始还是先判断是否接收到红外码,并把接收到的数据存储在变量results中。
[mw_shl_code=c,true]
if (irrecv.decode(&results))
[/mw_shl_code]

一旦接收到数据后,程序就要做两件事。第一件事,判断是否接收到了电源键的红外码。
[mw_shl_code=c,true]if(results.value == 0xFD00FF)[/mw_shl_code]


第二件事,就是让LED改变状态。
[mw_shl_code=c,true]
ledState = !ledState;             //取反      
   digitalWrite(ledPin,ledState);    //改变LED相应状态
[/mw_shl_code]
这里可能对“!”比较陌生,“!”是一个逻辑非的符号,“取反”的意思。我们知道“!=”代表的是不等于的意思,也就是相反。这里可以类推为,!ledState是ledState相反的一个状态。“!”只能用于只有两种状态的变量中,也就是boolean型变量。

最后,继续等待下一组信号。
[mw_shl_code=c,true]
irrecv.resume();
[/mw_shl_code]


可以做些其他的事
1、通过这个遥控项目,再结合上一个项目的风扇,能不能再给遥控器增加一个功能,既可控灯,还可控风扇。
2、DIY一个你的遥控作品吧!比如简单的会动的小人,结合我们前面的舵机,通过遥控器上不同的按键,让舵机转动不同的角度,感觉随你的控制转动,发挥你的想象做出更多Arduino作品吧!


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 03:39 , Processed in 0.142926 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表