楼宇中的感应灯,在白天的时候不论是否有声音都不会开启;街道的路灯在黑天的时候会自动开启,这些是由于电路中有感光元件在发挥作用,这里我们就做一个光敏电阻和Arduino的互动实验。
准备实验需要用到的硬件,如图所示:
按照下图中的电路,进行实验硬件的连接
将下列程序复制到Arduino IDE中,如下图所示:
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亮。
}
}
使用USB数据线连接Arduino UNO 控制器和电脑,选择正确的板型(Arduino UNO 和)、端口,点击上传,无误情况下软件会显示如下结果。
硬件回顾:光敏电阻
光敏电阻器是利用半导体的光电效应制成的一种电阻值随入射光的强弱而改变的电阻器;入射光强,电阻减小,入射光弱,电阻增大。光敏电阻器一般用于光的测量、光的控制和光电转换(将光的变化转换为电的变化)。常用的光敏电阻器硫化镉光敏电阻器,它是由半导体材料制成的。光敏电阻器的阻值随入射光线(可见光)的强弱变化而变化,在黑暗条件下,它的阻值(暗阻)可达1~10M 欧,在强光条件(100LX)下,它阻值(亮阻)仅有几百至数千欧姆。光敏电阻器对光的敏感性(即光谱特性)与人眼对可见光(0.4~0.76)μm 的响应很接近,只要人眼可感受的光,都会引起它的阻值变化。设计光控电路时,都用白炽灯泡(小电珠)光线或自然光线作控制光源,使设计大为简化。
光敏电阻外形如图所示:
实验效果:在白天的情况下,当遮挡光敏电阻时,LED点亮,不遮挡光敏电阻时,LED熄灭,如下图所示,光敏电阻没有被盖住的时候LED熄灭,当光敏电阻被遮盖住,LED会点亮。(其中可以改变 if(val《=512) 语句中的判断值来改变光敏电阻的灵敏度)
扩展实验,使用光敏电阻同样可以达到类似电位计调节LED亮度的效果,如实验电位计控制LED亮度,只需要将代码修改如下为所示代码,并正确上传执行即可,上传无误,编译器如下图所示。
#define LED 11 //定义LED引脚为10
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的亮度了)!下图所示,为光敏电阻被遮挡,LED显示最高亮度。
评论
查看更多