Arduino教程中级 项目二 感应灯
项目二 感应灯
本系列教程配套硬件套件:新版Arduino中级套件
上一课:项目一 点亮一盏灯这节要做的是个感应灯,当有人经过的时候,LED灯就会自动亮起,人一旦走了,LED又自动关闭了。这里用到的传感器是人体红外热释电运动传感器。它是一种能检测人或动物身体发射的红外线的传感器。拿它来做整人玩具应该是个不错的选择!
所需元件1×数字食人鱼红色LED发光模块
image001.jpg (18.79 KB, 下载次数: 7)
下载附件
保存到相册
2015-9-18 13:42 上传
1×人体红外热释电运动传感器
image003.jpg (17.93 KB, 下载次数: 7)
下载附件
保存到相册
2015-9-18 13:42 上传
硬件连接
人体红外热释电运动传感器 → 数字引脚2数字食人鱼红色LED发光模块 → 数字引脚13file:///C:/Users/ASH/AppData/Local/Temp/msohtmlclip1/01/clip_image006.png
image005.jpg (86.34 KB, 下载次数: 7)
下载附件
保存到相册
2015-9-18 13:43 上传
输入代码样例代码 2-1: //项目二 —— 感应灯int sensorPin =2; //传感器连接到数字2int ledPin =13; //LED连接到数字13int 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输出信号也是数字量,同样接数字口。file:///C:/Users/ASH/AppData/Local/Temp/msohtmlclip1/01/clip_image008.png
image007.jpg (39.34 KB, 下载次数: 7)
下载附件
保存到相册
2015-9-18 13:43 上传
代码回顾还是由输入输出着手,传感器是输入(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
※ 在之后的Arduino学习之旅中,不管你遇到奇奇怪怪的问题,都希望你与我们交流,欢迎登陆我们的DFRobot创客社区!www.dfrobot.com.cn
下一课:...