最新消息:380元/半年,推荐全网最具性价比的一站式编程学习平台码丁实验室

Arduino中级教程 项目二 感应灯

Arduino 少儿编程 2226浏览 0评论

友情提示:380元/半年,儿童学编程,就上码丁实验室

本教程由DFRobot提供。

该教程为中级套件教程。购买地址:

https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-12108364412.9.uh4s3j&id=44531434864

 

这节要做的是个感应灯,当有人经过的时候,LED灯就会自动亮起,人一旦走了,LED 又自动关闭了。这里用到的传感器是人体红外热释电运动传感器。它是一种能检测人或动物 身体发射的红外线的传感器。拿它来做整人玩具应该是个不错的选择!

 

所需元件

  • 1× 数字食人鱼红色LED 发光模块

    Arduino中级教程 项目二 感应灯

     

  • 1× 人体红外热释电运动传感器

     

     

Arduino中级教程 项目二 感应灯

硬件连接

人体红外热释电运动传感器 数字引脚2

数字食人鱼红色 LED发光模块 数字引脚 13

Arduino中级教程 项目二 感应灯

输入代码

样例代码 2-1:

//项目二 —— 感应灯

int sensorPin = 2; //传感器连接到数字 2

int ledPin = 13; //LED 连接到数字 13

int sensorState = 0; //变量 sensorState 用于存储传感器状态

void setup() {

pinMode(ledPin, OUTPUT); //LED 为输出设备

pinMode(sensorPin, INPUT); //传感器为输入设备

}

void loop(){

sensorState = digitalRead(sensorPin); //读取传感器的值

if (sensorState == HIGH) { //如果为高,LED 亮

digitalWrite(ledPin, HIGH);

}

else { //否则,LED 灭

digitalWrite(ledPin, LOW);

}

}

下载完成后,可以试着人走开,等待一段时间,看看 LED是否会关掉。随后再试着靠 近,LED 是不是会自动亮起。

 

硬件分析(数字输入—数字输出)

整个装置分为三个部分,输入,控制与输出。人体红外热释电运动传感器为输入设备, Arduino就是控制设备,LED 发光模块就是输出设备。

又由于人体红外热释电运动传感器为数字量的传感器,所以接数字口。LED 输出信号 也是数字量,同样接数字口。

Arduino中级教程 项目二 感应灯

代码回顾

还是由输入输出着手,传感器是输入(INPUT),LED 是输出(OUTPUT)。所以在初始化 中设置为:

pinMode(ledPin, OUTPUT); //LED 为输出设备

pinMode(sensorPin, INPUT); //传感器为输入设备

有了输入设备,我们需要读取输入设备的值,才能进行之后的判断,所以 loop 函数一 开始就是读取传感器的值。 读取数字传感器状态的函数是——digitalRead()。

sensorState = digitalRead(sensorPin);

函数格式如下:

digitalRead(pin)

这个函数是用来读取数字引脚状态,HIGH 还是 LOW。人体红外热释电传感器有人或 者动物走动时,读到 HIGH,否则读到 LOW。代码的后半段就是对判断出来的值来执行相 应动作。( HIGH 代表 1,LOW 代表 0)

数字传感器只会读到两个值(HIGH 和LOW)。这里要用到新的一个语句——if 语句。 if 语句格式如下:

(1)if(表达式){

语句;

}

(2)if(表达式){

语句;

}else{

语句;

}

表达式是指我们的判断条件,通常为一些关系式或逻辑式,也可是直接表示某一数值。 如果 if 表达式条件为真,则执行 if 中的语句。表达式条件为假,则跳出 if语句。格式(1)多 用于一种判断中,格式(2)多用于两种判断的情况。

这里只有两种情况,传感器有人读到的是高,否则就是低。所以用的 if…else 语句。 if (sensorState == HIGH) {

… //如果为高,LED 亮

}

else {

… //否则,LED 灭

}

“==”是一种比较运算符,用于判断两个数值是否相等,记得是“双等号”!而“=” 是赋值的意思。把等号右边的值赋给左边。

我们常用的运算符有:

==(等于)

!=(不等于)

<(小于)

>(大于)

<=(小于等于)

>=(大于等于)

特别说明下,小于等于和大于等于,<和=之间不能留有空格,否则编译不通过。

当然,除了比较运算符外,程序也可以用的+、-、*、/(加、减、乘、除)这些常用 的算术运算符。

 

趣味练习

(1) 喜欢去鬼屋玩的小伙伴们,一定会喜欢这个,给LED 做个“面目狰狞”的壳儿,放 在一个阴冷黑暗的小屋,再配点刺激的音乐,应该还是挺带感的。当然灯光效果也 少不了,可以换成开关切换频率较快的模式。

(2) 文艺青年可以拿这个人体红外热释电传感器做个漂亮的装饰灯。详见教程: http://www.dfrobot.com.cn/community/forum.php?mod=viewthread&tid =1983&highlight=IQ%E7%81%AF

 

 

 

您必须 登录 才能发表评论!