YFROBOT创客社区
标题: Arduino入门教程—基础实验篇六 光控开关 [打印本页]
作者: AllBlue 时间: 2013-5-26 08:29
标题: Arduino入门教程—基础实验篇六 光控开关
本帖最后由 AllBlue 于 2013-10-29 19:20 编辑
光控开关
今天我们做一个光控开关实验,我们使用到一种电阻--光敏电阻。
实验元件:UNO 实验套装(UNO R3控制板、USB数据线、面包板、跳线)
LED灯 一枚
光敏电阻 一个
电阻220Ω 一枚
电阻10KΩ 一枚
光敏电阻又称光导管,常用的制作材料为硫化镉,另外还有硒、硫化铝、硫化铅和硫化铋等材料。这些制作材料具有在特定波长的光照射下,其阻值迅速减小的特性。实物图如下:
[attach]478[/attach]
光敏电阻的工作原理是基于内光电效应。在半导体光敏材料两端装上电极引线,将其封装在带有透明窗的管壳里就构成光敏电阻,为了增加灵敏度,两电极常做成梳状。当有光线照射时,电阻内原本处于稳定状态的电子受到激发,成为自由电子。所以光线越强,产生的自由电子也就越多,电阻就会越小。经过测试,光敏电阻在黑暗中,电阻值大概有1~10M,在光照下,电阻值大概有几百到几千欧姆。
下面我们就用它来做本次实验。
下图是实验电路图(接线时注意尽量不要遮挡住光敏电阻,以免影响实验结果):
[attach]484[/attach]
电路搭建好了,我们要将程序烧写到UNO 中,例程如下:- /*
- 光敏电阻控制 LED
- 根据传感器的模拟值大小设定LED的亮度
- */
- #define LED 11 //定义LED引脚为11
- int val = 0; //储存传感器的变量数值
- void setup(){
- pinMode(LED, OUTPUT); //设定LED引脚为输出状态
- //注意:模拟接口自动设为输入
- }
- void loop(){
- val = analogRead(5); //读取传感器的模拟值并储存
- analogWrite(LED,val/4); //设置LED亮度(PWM输出范围0-255)
- delay(10); //延时10毫秒
- }
复制代码例程中,val = analogRead(5);这个语句是读取模拟端口A5的值,不是数字端口5,模拟接口默认为输入端口,不用再写语句。analogWrite(LED,val/4); 这个语句是设置LED亮度,val/4是因为val读取出来的值范围是0~1023,而上面介绍过PWM范围是0~255,所以要将val的值除以4!!
该程序,实际效果:有遮挡时,LED亮度变亮,无遮挡时,LED亮度变暗,光线强烈时,LED会熄灭(有可能只是肉眼看不到LED的亮度了)!- int photoresistancePin = 5; //定义变量photoresistance=5,为电压读取端口。
- int ledPin = 11; //设置led数字IO脚
- int val = 0; //定义变量i
- void setup() {
- pinMode(ledPin, OUTPUT); //设置ledPin脚模式,为输出
- }
- void loop() {
- val = analogRead(photoresistancePin); //从传感器读取值
- if(val<=512){
- /*512=2.5V,想让传感器敏感一些的时候,把数值调高,
- 想让传感器迟钝的时候把数值调低。*/
- digitalWrite(ledPin, LOW);//当光照强度过强时led灭。
- }
- else{
- digitalWrite(ledPin, HIGH); //当光照强度过低时led亮。
- }
- }
复制代码这个程序效果:用手遮挡光敏电阻,LED点亮,不遮挡,LED熄灭,当然这是在白天的情况下。(其中可以改变判断值来改变光敏电阻的灵敏度)
在此感谢sangluyuan 同学的指出文章中的错误!!
作者: handanqibu 时间: 2015-7-28 20:46
什么是photoresistancePin
作者: AllBlue 时间: 2015-7-28 21:15
这只是个名称,用来指定连接光敏电阻的引脚
作者: handanqibu 时间: 2015-8-13 21:24
不明白什么意思,能具体点吗
作者: handanqibu 时间: 2015-8-18 15:21
photoresistancePin是个人定义的,还是arduiro中的专门定义 模拟端口不需要在编程中注明吗
作者: AllBlue 时间: 2015-8-18 20:04
自己定义的哦
作者: tiantianyouyou 时间: 2019-5-1 19:50
Arduino入门教程—基础实验篇六 光控开关
作者: Kuroi 时间: 2020-1-20 10:39
很棒哦~
作者: 2806880 时间: 2020-2-10 23:50
感谢,明天做做这个试验,如果灯的变化很小,会不会是电阻10KΩ的问题?
作者: limhy1990 时间: 2020-3-22 22:43
幸亏,有读过一些 c++
欢迎光临 YFROBOT创客社区 (http://yfrobot.com.cn/) |
Powered by Discuz! X3.1 |